Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 20
Pemrograman Basis Data
Basic SQL Procedure Structure
Tri Afirianto, S.T., M.T. tri.afirianto@ub.ac.id Universitas Brawijaya Unit Objectives • After completing this unit, you should be able to: • Describe the structure of an SQL procedure • Explain various clauses of the CREATE PROCEDURE statement • List the statements that can be coded in the procedure body • Alter Procedure • Drop Procedure • Create Module • Replace Module • Alter Module • Drop Module SQL Stored Procedures • Based on ANSI/ISO standard language SQL/PSM • Simple language which includes: • Feature from block-structured language • Exception handling • Familiar to Sybase, Oracle, Informix, Microsoft SQL Server programmers SQL Procedure Language • SQL Procedures support: • Multiple parameters: input, output, input/output • Returning multiple output result sets to a client or to a calling SQL procedure • SQL Procedures are defined in DB2 catalog • SQL Procedure source is stored in DB2 catalog • SQL Procedure Language (SQL PL) is folded to uppercase – Exception: delimited values SQL Procedure Language SQL Procedure Language • A CREATE PROCEDURE statement • LANGUAGE SQL • A procedure body which may include: • Compound statement(s): BEGIN … END • Declaration statements • Assignment statements • Conditional statements • Iterative control structure: LOOPs, and so forth • Exception handling • CALL another stored procedure Structure SQL Procedure Structure SQL Procedure An SQL Procedure can be: SQL Procedure Language Statements • Not limited to stored procedures • Some platform differences • Facilitate application solution • Add business logic capability to SQL language Where to Use “;” Declarations • Local variables • DECLARE var_name datatype[ DEFAULT value]; • Example: DECLARE my_var INTEGER DEFAULT 6; • Default value is NULL • Variable name is folded to upper case • Rules for ambiguous names: • First, check to see if there is an existing column of the same name (in one of the referenced tables) • When a column does not exist with that name, then check to see if there is an already defined SQL variable or parameter with the same name • Assumed to be a column name Declarations • Condition declaration: • DECLARE not_found CONDITION FOR SQLSTATE ‘02000’; • Local cursor declaration: • DECLARE c1 CURSOR FOR select * from staff; • WITH RETURN TO CLIENT / WITH RETURN TO CALLER • Handler declaration: • DECLARE EXIT HANDLER FOR SQLEXECPTION…; Assignments SQL Procedures: Under the Cover • Preparing an SQL procedure for execution SQL Procedures: Under the Cover • How things work in DB2 for Linux, UNIX, and Windows 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 Module: Module Specification • Module that exports a 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(OUT parm1 ANCHOR myTab.col2); Modules: 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 joe execute privilege on all routines and access to all variables and types in myMod Modules Unit Summary Having completed this unit, you should be able to: • Describe the structure of an SQL procedure • Explain various clauses of the CREATE PROCEDURE statement • List the statements that can be coded in the procedure body • Alter Procedure • Drop Procedure • Create Module • Replace Module • Alter Module • Drop Module