IBM Books

Call Level Interface Guide and Reference

User Defined Type Example

This example shows some UDTs and UDFs being defined, as well as some tables with UDT columns. For an example that inserts rows into a table with UDT columns, refer to Example.

/* From CLI sample create.c */
/* ... */
    /* Initialize SQL statement strings */
    SQLCHAR * stmt[] = {
 
        "CREATE DISTINCT TYPE CNUM AS INTEGER WITH COMPARISONS",
 
        "CREATE DISTINCT TYPE PUNIT AS CHAR(2) WITH COMPARISONS",
 
        "CREATE DISTINCT TYPE UPRICE AS DECIMAL(10, 2) "
        "WITH COMPARISONS",
 
        "CREATE DISTINCT TYPE PRICE AS DECIMAL(10, 2) "
        "WITH COMPARISONS",
 
        "CREATE FUNCTION PRICE( CHAR(12), PUNIT, char(16) ) "
        "returns char(12) "
        "NOT FENCED EXTERNAL NAME 'order!price' "
        "NOT VARIANT NO SQL LANGUAGE C PARAMETER STYLE DB2SQL "
        "NO EXTERNAL ACTION",
 
        "CREATE DISTINCT TYPE PNUM AS INTEGER WITH COMPARISONS",
 
        "CREATE FUNCTION \"+\"(PNUM, INTEGER) RETURNS PNUM "
        "source sysibm.\"+\"(integer, integer)",
 
        "CREATE FUNCTION MAX(PNUM) RETURNS PNUM "
        "source max(integer)",
 
        "CREATE DISTINCT TYPE ONUM AS INTEGER WITH COMPARISONS",
 
        "CREATE TABLE CUSTOMER ( "
        "Cust_Num     CNUM NOT NULL, "
        "First_Name   CHAR(30) NOT NULL, "
        "Last_Name    CHAR(30) NOT NULL, "
        "Street       CHAR(128) WITH DEFAULT, "
        "City         CHAR(30) WITH DEFAULT, "
        "Prov_State   CHAR(30) WITH DEFAULT, "
        "PZ_Code      CHAR(9) WITH DEFAULT, "
        "Country      CHAR(30) WITH DEFAULT, "
        "Phone_Num    CHAR(20) WITH DEFAULT, "
        "PRIMARY KEY  (Cust_Num) )",
 
        "CREATE TABLE PRODUCT ( "
        "Prod_Num     PNUM NOT NULL, "
        "Description  VARCHAR(256) NOT NULL, "
        "Price        DECIMAL(10,2) WITH DEFAULT , "
        "Units        PUNIT NOT NULL, "
        "Combo        CHAR(1) WITH DEFAULT, "
        "PRIMARY KEY (Prod_Num), "
        "CHECK (Units in (PUNIT('m'), PUNIT('l'), PUNIT('g'), PUNIT('kg'), "
        "PUNIT(' ')))  )",
 
        "CREATE TABLE PROD_PARTS ( "
        "Prod_Num     PNUM NOT NULL, "
        "Part_Num     PNUM NOT NULL, "
        "Quantity     DECIMAL(14,7), "
        "PRIMARY KEY (Prod_Num, Part_Num), "
        "FOREIGN KEY (Prod_Num) REFERENCES Product, "
        "FOREIGN KEY (Part_Num) REFERENCES Product, "
        "CHECK (Prod_Num <> Part_Num) )",
 
        "CREATE TABLE ORD_CUST ( "
        "Ord_Num      ONUM NOT NULL, "
        "Cust_Num     CNUM NOT NULL, "
        "Ord_Date     DATE NOT NULL, "
        "PRIMARY KEY (Ord_Num), "
        "FOREIGN KEY (Cust_Num) REFERENCES Customer )",
 
        "CREATE TABLE ORD_LINE ( "
        "Ord_Num      ONUM NOT NULL, "
        "Prod_Num     PNUM NOT NULL, "
        "Quantity     DECIMAL(14,7), "
        "PRIMARY KEY (Ord_Num, Prod_Num), "
        "FOREIGN KEY (Prod_Num) REFERENCES Product, "
        "FOREIGN KEY (Ord_Num) REFERENCES Ord_Cust )",
 
        ( char * ) 0,
 
    } ;
 
/* ... */
 
    /* Execute Direct statements */
    i = 0 ;
    while ( stmt[i] != ( char * ) 0 ) {
       printf( ">Executing Statement %ld\n", ( i + 1 ) ) ;
       rc = SQLExecDirect( hstmt, stmt[i], SQL_NTS ) ;
       CHECK_HANDLE( SQL_HANDLE_STMT, hstmt, rc ) ;
       i++ ;
    }


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]

[ DB2 List of Books | Search the DB2 Books ]