You are on page 1of 42

Introduction to Netezza

Bank of America
Topics

• Netezza Architecture

• SQL Differences

• Stored Procedure Differences

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


2
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Netezza Architecture – TwinFin 12

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


3
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Topics

System Architecture

Snippet Processing Unit (SPU)

System Capacity

Distribution in a shared-nothing architecture

Zone maps & data organization

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


4
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Database Hardware Architecture Terminology

• Symmetrical Multi Process Architecture (SMP)


• Multiple processors sharing access to disk and memory
• Processors operate asynchronously
• Examples: Sybase, Sybase IQ, Oracle, SQL Server, DB2

• Massive Parallel Process Architecture (MPP)


• Multiple processors, each with separate, dedicated memory and disk
• No hardware is shared between processors
• Processors are slaved to a controller
• Processors operate synchronously
• Implemented many different ways
• Netezza approach is unique
• Examples: Netezza, Teradata, Green Plum, Aster, Vertica

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


5
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Netezza Architecture

SQL command sent to


Result
hostsent
fromto
user
user
Host compiles SQL,
Host collects and develops execution
returns result sets Host plan and sends code
snippets to SPUs
based on plan

SPUs pass data between


each other as needed

Know Your Customers. Grow Your Business.


SPU executes code snippet.
All SPUs execute same code synchronously.

to Netezza –| Prepared for Bank of America


6
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Snippet Processing Unit (SPU)

Each SPU has a dedicated 1TB disk

Disk controlled by FPGA (Field


Programmable Gate Array)

CPU loads query code into FPGA

FPGA executes code using memory


and cache

CPU performs additional processing to


result set

CPU communicates toYour


Know controller andYour Business.
Customers. Grow
other SPUs via NIC

to Netezza –| Prepared for Bank of America


7
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
System Capacity – TwinFin 12

• 12 S-Blades, each have 8 SPUs

• 4 SPUs are spares for fail over – 92 usable SPUs

• Each SPU has a 1TB disk drive

• Disk divided into 3 330GB partitions:


• Active data area
• Workspace
• Redundant copy of another SPU’s active data area

• Nominal 330GB capacity per SPU (uncompressed)

• Nominal 30TB capacity per system (uncompressed)


Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


8
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
MPP Shared Nothing Architecture

• A SPU only has visibility to the data on its own disk.

• A SPU will broadcast data to other SPUs as needed (based on


instructions from the controller) via the NIC.

• Broadcast data is received and held in memory or work area by


the SPU for use in resolving the query.

• Each SPU operates synchronously with all other SPUs. Each


execute the same snippet at the same time.

• The controller’s execution plan ensures minimal data transfer


between SPUs.
Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


9
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Data Distribution

• Data distribution to a SPU is defined by the DISTRIBUTE ON


clause of the CREATE TABLE command

• Each table is distributed across all 92 SPUs

• You can distribute RANDOM or specify one or more columns in


the table as a distribution key
• Controller uses distribution key information when deciding the execution plan
• Joins between tables with the same distribution key that are joined using that key will execute
entirely on that SPU without the need to broadcast data (table co-location)
• Joins to tables with RANDOM distribution will require data broadcast. The smaller of the two
sets is broadcast

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


10
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Effects of Poor Data Distribution

• System Capacity
• The system is ‘full’ when any one SPU is full
• A badly skewed distribution of a large table may fill up a SPU prematurely
• Try to keep skew under 10% (5% off average) for very large tables

• System Performance
• SQL code snippets are executed synchronously among all SPUs
• The total execution time for a snippet is the longest time among the SPUs
• The total execution time for a query is the sum of the longest times for each snippet
• Snippet execution time is proportionally related to the amount of data a SPU needs to process
• A query will only run as fast as the slowest SPU

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


11
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Data Distribution – Co-Location

• Co-Location is the physical placement of related data across


multiple tables onto the same SPU
• Allows a SPU to join co-located data without interaction with other SPUs
• Speeds queries by eliminating data broadcast steps

• Tables must have identical distribution key columns


• RANDOM distribution will not co-locate
• Any difference in columns will result in a different, unrelated SPU assignment

• Join expression must include all distribution key columns


• Query compiler cannot assume co-location unless the join between two co-located tables
includes equi-joins between all columns specified in the distribution key
• Ensure use by defining as few columns as possible as a distribution key

• Don’t bother with small tables


Know Your Customers. Grow Your Business.
• No real advantage co-locating small tables

to Netezza –| Prepared for Bank of America


12
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Data Distribution - Example

CREATE TABLE TSVALUES


(
• All 3 tables share ID_TS as a ID_TSDATE INTEGER NOT NULL,
ID_TS INTEGER NOT NULL,
common key VALUE DOUBLE PRECISION NOT NULL,
• ID_TS is always used when joining ID_SRC INTEGER NOT NULL,
ID_STATUS INTEGER NOT NULL,
these tables TS_BEGIN TIMESTAMP NOT NULL,
TS_END TIMESTAMP NOT NULL,
• ID_TS is the appropriate column to SIGMA DOUBLE PRECISION NOT NULL
Know Your Customers. Grow Your Business. )
use as a distribution key DISTRIBUTE ON (ID_TS)
ORGANIZE ON (TS_END, TS_BEGIN);

to Netezza –| Prepared for Bank of America


13
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Data Distribution – Example

• Aginity Workbench
• Provides ability to redistribute existing tables
• Allows you to view a table’s distribution

• Distribution display for TSValues:

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


14
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Co-Located Queries

SELECT N.ID_TS, N.TICKER, N.NAME, V.VALUE


FROM TSNAMES N, TSVALUES V
WHERE N.ID_TS = V.ID_TS
AND V.TS_BEGIN BETWEEN N.TS_BEGIN AND N.TS_END
AND V.TS_END = ‘1/1/3000’;

• The query will execute in parallel across all SPUs without data
sharing because:
• Both tables are distributed on the same key (ID_TS)
• ID_TS is used to join the tables

• Identical distribution key definitions across tables ensure rows


with the same distribution key values in those tables reside on
the same disk and SPU.

• Run times (493M row result set):


Know Your Customers. Grow Your Business.
• Co-located: 22.1 seconds
• TSNames distributed on RANDOM: 74.3 seconds

to Netezza –| Prepared for Bank of America


15
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Distribution Key Advice

• Keep distribution key as small as possible


• One column is best
• Ensure full use in joins
• Tables with some keys in common will not result in co-location

• Use a key that provides even distribution


• Avoid skews > 10% in very large tables (> 5% nominal system capacity)
• Avoid skews > 5% in multiple same key tables with total size > 5% nominal system capacity
• Avoid skews > 20% in other tables
• May be necessary to add a column to the distribution key to reduce skew
• Don’t worry about skew in small tables (< 0.1 % nominal system capacity)

• Poor Distribution Keys


• Dates – cause query ‘hotspots’ when queries based on date range
• Low cardinalityKnow
columns
Your Customers. Grow Your Business.
• Never use a column with cardinality less than the number of SPUs
• Columns with cardinality < 20 x #of SPUs may produce very bad skews

to Netezza –| Prepared for Bank of America


16
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Zone Maps

• A zone map records the high and low values of columns for
rows in a data block on disk

• Netezza uses zone maps to skip data blocks that do not satisfy
query predicates, speeding query execution

• Zone maps are automatically created for Integer, Date and


Timestamp columns

• You can specify additional zone map columns in the ORGANIZE


ON clause of the CREATE TABLE statement

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


17
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
ORGANIZE ON Clause

• Defines a Clustered Base Table

• Data is arranged (sorted) by the ORGANIZE ON columns during


GROOM

• Improves effectiveness of zone maps

• Specify up to 4 columns

• Allowable data types:


• INTEGER, DATE, TIMESTAMP
• CHAR, VARCHAR, NCHAR, NVARCHAR – Only first 8 bytes used
• NUMERIC – up to NUMERIC(18)
• FLOAT, DOUBLE
• BOOL Know Your Customers. Grow Your Business.

• TIME, TIME with Time zone


• INTERVAL

to Netezza –| Prepared for Bank of America


18
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Using ORGANIZE ON

• Select columns most likely used in WHERE clause

• Zone map efficiency diminishes for 3rd and 4th columns


• Greater chance a wide range of values appearing in a data block

• Arrange lower cardinality or “clumpier” columns first


• Groups larger numbers of rows first, spread over more data blocks
• Increases likelihood subsequent columns spread over multiple blocks
• “Clumpy” – large portion of rows have few unique values

• GROOM table periodically


• Reorganizes data according to ORGANIZE ON specification
• Removes deleted rows

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


19
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Using ORGANIZE ON - TSValues

• All current rows have ts_end = 1/1/3000 (very clumpy)

• Current rows are of greatest interest (most often selected)

• ts_begin commonly used in most queries

• Specify ts_end first. Clumps all current rows into contiguous


blocks. CREATE TABLE TSVALUES
(
ID_TSDATE INTEGER NOT NULL,
ID_TS INTEGER NOT NULL,
VALUE DOUBLE PRECISION NOT NULL,
ID_SRC INTEGER NOT NULL,
ID_STATUS INTEGER NOT NULL,
TS_BEGIN TIMESTAMP NOT NULL,
TS_END TIMESTAMP NOT NULL,
SIGMA DOUBLE PRECISION NOT NULL
)
Know Your Customers.
DISTRIBUTE Grow Your Business.
ON (ID_TS)
ORGANIZE ON (TS_END, TS_BEGIN);

to Netezza –| Prepared for Bank of America


20
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
GROOM Command

GROOM TABLE TSVALUES


RECORDS ALL
RECLAIM BACKUPSET DEFAULT;

• Organizes rows based on ORGANIZE ON clause

• Reclaims space from deleted rows


• Netezza performs updates by deleting old row and inserting new row
• Deleted rows consume space until table is GROOMed

• Fast – 15 minutes for 4.6 billion rows in TSValues

• Table remains available for query/update


Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


21
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
SQL Differences – Netezza/Sybase

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


22
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Topics

• General Language Characteristics

• Identifiers

• Data Types

• Functions

• Command differences

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


23
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
General Language Characteristics

• Similar to Oracle syntax and interpretation

• Commands terminated with semi-colon (;)


• Terminator is required at all times

• Uses Oracle’s interpretation of NULL


• A zero length string (‘’) is considered NULL
• Assigning ‘’ to a character column defined as NOT NULL will generate an error

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


24
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Identifiers

• An identifier names a database object

• There are 2 types of Identifiers: regular and delimited

• Regular Identifier
• Is case insensitive
• Must begin with a letter
• Contain letters, digits, underscores, dollar sign ($)

• Delimited Identifier
• Enclosed in double quotes
• Is case sensitive
• May include spaces, other special symbols and reserved words
• May begin with any allowable character
Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


25
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Data Types

• Does not support LOB types (CLOB, BLOB)

• Character types
• CHAR, VARCHAR: ASCII data, 64,000 maximum length
• NCHAR, NVARCHAR: Unicode data, 16,000 maximum length

• Exact Numeric Types


• BYTEINT 8 bit signed integer
• SMALLINT 16 bit signed integer
• INTEGER 32 bit signed integer
• BIGINT 64 bit signed integer
• NUMERIC(p,s), NUMERIC(p) Up to 38 digits precision (p), scale (s) from 0 to p
• NUMERIC Same as NUMERIC(18, 0)

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


26
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Data Types (continued)

• Approximate Numeric Types


• FLOAT(p) precision can range from 1 to 15
• REAL same as FLOAT(6) – 4 bytes
• DOUBLE PRECISION same as FLOAT(15) – 8 bytes

• Logical Types
• BOOLEAN (or BOOL) True/false value, 1 byte

• Temporal Types
• Time maintained to microsecond (6 decimal places)
• DATE Date with no time – 4 bytes
• TIME Time with no date – 8 bytes
• TIME WITH TIME ZONE Time with time zone information – 12 bytes
• TIMESTAMP Date and time – 8 bytes
• INTERVAL Know Time interval,
Your non-standard
Customers. implementation
Grow Your Business.
• Maintained in seconds
• Ignores unit declarations, literals require explicit units
• Month assumed to be 30 days
to Netezza –| Prepared for Bank of America
27
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Internal Data Types (pseudo-columns)

• ROWID
• Unique row identifier, assigned when row is inserted
• Not sequential in table
• Value range 100,000 - 9,223,372,036,854,775,807
• Will numbers ever repeat?
• If a table contains 2 billion rows and takes 3 minutes to copy
• And if the table is copied repeatedly and continuously (add 2 billion rows every 3 minutes)
• It will take over 24,000 years to run out of numbers
• Netezza hopes you would have upgraded before then

• CREATEXID, DELETEXID
• Transaction ID that created and deleted the row.
• If DELETEXID > 0, row has been deleted
• You can not see deleted rows using SQL
Know Your Customers. Grow Your Business.
• DATASLICEID
• Identifies the SPU holding the row

to Netezza –| Prepared for Bank of America


28
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Operators

• Differences from Sybase


• Concatenation ||
• Not Equal <> or !=
• Null test ISNULL or IS NULL
NOTNULL or IS NOT NULL

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


29
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Conditional Column Expression Functions

• CASE
Searched form: Value form:
CASE CASE <test-value>
WHEN <search-condition-1> THEN <result-1> WHEN <comparand-value-1> THEN <result-1>
WHEN <search-condition-2> THEN <result-2> WHEN <comparand-value-2> THEN <result-2>
... ...
WHEN <search-condition-n> THEN <result-n> WHEN <comparand-value-n> THEN <result-n>
ELSE <default-result> ELSE <default-result>
END END
Search conditions can be arbitrarily complex and Test values, comparand values, and results can be
results can be expressions. expressions.

• DECODE
• Same as Oracle DECODE
• decode(<expr>,<search1>,<result1>, …<search N>,<result N>,<default>)

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


30
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Commonly Used Functions

• Current time
• Use NOW() or CURRENT_TIMESTAMP
• TIMEOFDAY() returns a verbose date string. Example: ‘Mon Jan 24 16:12:05 2011 EST’

• Date Conversion
• Date literal is in MM/DD/YYYY format (default). Example: ‘1/1/3000’
• TO_DATE(<text>, <template>) Converts string to DATE data type
Template describes format of date string.
Example: TO_DATE(‘24 Jan 2011’, ‘DD Mon YYYY’)
• TO_TIMESTAMP (<text>, <template>) Converts string to TIMESTAMP data type
• TO_CHAR(date or timestamp, <template>) Converts date or timestamp to string
• See User Guide pp 3-26 – 3-28 for template information

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


31
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
SQL Differences - Update

Sybase Netezza

update #tempRaw update tempRaw a


Set a.Sigma = b.Sigma Set Sigma = b.Sigma
from #tempRaw a,TSValues b from TSValues b
where a.ID_TS = b.ID_TS where a.ID_TS = b.ID_TS
and a.ID_TSDate = b.ID_TSDate and a.ID_TSDate = b.ID_TSDate
and getdate() < b.ts_end and now() < b.ts_end
and a.ID_Status >= 1 and a.ID_Status >= 1
and a.ID_StatusSigma <= -1 and a.ID_StatusSigma <= -1
and IsDelete = 0 and a.isdelete = 0;

• Special characters not used


for temporary tables

• Table only referenced once


Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


32
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
SQL Differences - DELETE

• DELETE may only reference one table


• DELETE FROM <table> WHERE <condition>

• Cannot directly convert:


DELETE #tempRaw FROM TSValues B , #tempRaw A
where A.ID_TS = B.ID_TS and A.ID_TSDate = B.ID_TSDate
and ( ( A.Value = B.Value and A.ID_Status = B.ID_Status ) or ( B.ID_Status >= 1 and A.ID_Status <= -1 ))
AND ( abs(A.Sigma - B.Sigma) < 0.00000001 or A.ID_StatusSigma <= -1)
and getdate() between B.ts_begin and B.ts_end AND A.Comments IS NULL

• Use UPDATE then DELETE:


Add a boolean column ‘deleteme’ to tempRaw table. Initialize to FALSE.

UPDATE tempRaw a
set deleteme = TRUE
FROM TSValues B
WHERE A.ID_TS = B.ID_TS AND A.ID_TSDate = B.ID_TSDate
AND ( ( A.Value = B.Value and A.ID_Status = B.ID_Status ) OR ( B.ID_Status >= 1 and A.ID_Status <= -1 ))
AND ( abs(A.Sigma - B.Sigma) < 0.00000001 OR A.ID_StatusSigma <= -1)
AND NOW() BETWEEN
Know Your B.ts_begin AND
Customers. B.ts_end
Grow Your AND A.Comments IS NULL;
Business.
DELETE FROM tempRaw WHERE deleteme;

to Netezza –| Prepared for Bank of America


33
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
SQL Differences

• Materialized Views
• View may have only one source table
• Limited to 64 columns
• May include an ORDER BY clause
• Optimize zone maps
• Cannot include an ORGANIZE ON clause

• Sequences
• You may specify data type (byteint, smallint, int, bigint)
• Default is bigint (64 bit signed integer)
• Blocks of numbers are allocated to each SPU during execution
• Sequential number assignment cannot be assured

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


34
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Stored Procedure Differences

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


35
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Topics

• General Differences

• CREATE PROCEDURE statement

• Iterating through rows (cursors)

• Returning result sets

• System Variables & Special Functions

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


36
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
General Differences

• Statements are terminated with semi-colons (;)

• Variables are not prefixed with special characters

• := symbol used for variable assignment


a := 1;

• Syntax similar to Oracle PL/SQL

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


37
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
CREATE PROCEDURE

Sybase Netezza
CREATE PROCEDURE sp_TS_ProcessFillValues CREATE PROCEDURE sp_TS_ProcessFillValues
(@LoaderID int, @ID_SRC int) (INTEGER, INTEGER)
AS RETURNS INTEGER EXECUTE AS CALLER
DECLARE @err_no int, @err_msg varchar(250), LANGUAGE NZPLSQL
@CurrentTime datetime AS
begin_proc
<...procedure code ...> DECLARE
LoaderID alias for $1;
GO ID_SRC ALIAS FOR $2;
CurrentTime datetime;
Parameters are unnamed, referenced by position: EndDate datetime;
$1, $2… StartDate datetime;
Alias may be used to name parameters
begin
Procedure enclosed in a BEGIN_PROC - <... procedure code ...>
END_PROC block end;
end_proc;
Executable code enclosed in a BEGIN – END block
following declarations.
Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


38
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Iterating Through Rows

• Netezza does not support cursor data type

• Use looping to iterate through a result set:

FOR record | row IN select_clause LOOP


statements
END LOOP;

Alternate form:

FOR record | row IN EXECUTE text_expression LOOP


statements
END LOOP;

• Example
DECLARE myrec RECORD;
mytotal DOUBLE PRECISION;
BEGIN
Know
FORYour Customers.
myrec Grow*Your
IN SELECT FROMBusiness.
tsvalues LOOP
mytotal := mytotal + myrec.value;
END LOOP;
END;
to Netezza –| Prepared for Bank of America
39
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Returning Sets from Stored Procedures

• Use RETURNS REFTABLE (<table name>) clause


• <table name> refers to a table defined in the schema
• Used to define the format of the result set being returned (metadata only)

• Use REFTABLENAME to refer to the result set


• REFTABLENAME is a system provided variable
• System generates a unique table name
• Essentially a CREATE TEMP TABLE command
• Generate result set using EXECUTE IMMEDIATE
• Example:
EXECUTE IMMEDIATE ‘INSERT INTO ‘ || REFTABLENAME || ‘ VALUES (…);’

• Use RETURN REFTABLE to return result set

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


40
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
System Variables and Special Functions

• SQLERRM
• Error message relating to last SQL error

• ROW_COUNT
• Number of rows affected by last executed SQL statement

• QUOTE_LITERAL(<expression>)
• Used when building EXECUTE IMMEDIATE strings
• Converts the value of the expression into a properly formatted literal string
• Escapes any special characters as necessary.

• QUOTE_IDENT(<expression>)
• Used when building EXECUTE IMMEDIATE strings
• Converts expression into properly formatted database object name string
• Mainly used for delimited
Know identifiers
Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


41
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007
Netezza Manuals

Full documentation can be found at:

\\crpnycnaf00n2\ReconDQ\Netezza\Manuals

Know Your Customers. Grow Your Business.

to Netezza –| Prepared for Bank of America


42
Ipsos Loyalty
Introduction © 2011 Aginity LLC Ipsos, January 2007