Overview of SQL PL Language Elements & Modules
description
Transcript of Overview of SQL PL Language Elements & Modules
OVERVIEW OF SQL PL LANGUAGE ELEMENTS & MODULES
UNIT OBJECTIVESAfter completing this unit, you should be able to: Discuss DB2 data types Select the proper data types Work with user-defined data types Work with Row data type Work with Associative arrays Implement data type anchoring Create Module Replace Module Alter Module Drop Module
DB2 BUILT-IN DATA TYPES
USER-DEFINED DISTINCT TYPESUDTs –User-Defined Data Types: Defined on existing data types
Generates a function to cast between the distinct type and its source type
Generates a function to cast between the source type and its distinct type
Used to enforce business rulesCREATE
ROW DATA TYPE
ARRAY DATA TYPE Conventional array
CREATE TYPE arrType AS INTEGER ARRAY[1000]; Associative array
CREATE TYPE arrType2 AS INTEGER ARRAY[VARCHAR(100)];
CREATE TYPE arrType3 AS myRowType ARRAY[VARCHAR(100)];
ASSOCIATIVE ARRAYS: EXAMPLE (1 OF 2)
ASSOCIATIVE ARRAYS: EXAMPLE (2 OF 2)
DATA TYPE ANCHORING Keep procedural variables in sync with table
columns Scalar anchoring
DECLAREempSalaryANCHORemployee.salary; Row anchoring
DECLARE emp ANCHOR ROWemployee;
BEGINDECLARE emp ANCHOR ROW employee;SETemp.empno= ‘000100’; SETemp.lastname= ‘McClung’;SETemp.firstname= ‘Naomi’;
END
MODULES: OVERVIEW Module = bundle of several related objects:
SPs, UDFs, global variables and cursors, types, conditions
Similar to a class in OO languages (but single instance)•
Four main benefits: Code organization/structure Scoping
CALL mySchema.myModule.myProc() Information hiding
Each object can be “public” or “private” Global privilege control
Instead of granting/revoking on each SP, UDF or variable
MODULES: MODULE SPECIFICATION Module that exportsa type, a Stored
Procedure, and a User-Defined Function CREATE OR REPLACE MODULE myMod; ALTER MODULE myMod PUBLISH
TYPE myRowTypAS ANCHOR ROW myTab; ALTER MODULE myMod PUBLISH
FUNCTION myFunc(val1 ANCHOR myTab.col1) RETURNS myRowTyp;
ALTER MODULE myMod PUBLISH PROCEDURE myProc(OUTparm1 ANCHOR myTab.col2);
ENDMODULES: MODULE IMPLEMENTATION
MODULES: OTHER STATEMENTS DROP MODULE myMod;
Drops entire module ALTER MODULE myMod DROP BODY;
Drop “implementation”, keeps “specification” ALTER MODULE myMod DROP PROCEDURE
myProc; Drops module object
GRANT EXECUTE ON MODULE myMod TO joe; Grants user joeexecute privilege on all routines
and access to all variables and types in myModModules
UNIT SUMMARYHaving completed this unit, you should be able to: Discuss DB2 data types Select the proper data types Work with user-defined data types Work with Row data type Work with Associative arrays Implement data type anchoring Create Module Replace Module Alter Module Drop Module