Execute Dynamic SQL in DB2 Store Procedure
วิธีการสร้าง SQL Statement ใน Store Procedure ของ DB2 และ Return Cursor ออกมา สามารถทำได้ตามนี้
CREATE PROCEDURE SP_COUNT_ROW( IN pTblName VARCHAR(50) )
RESULT SET 1
LANGUAGE SQL
BEGINDECLARE vTmp VARCHAR(200);
DECLARE vStmt statement;DECLARE c1 CURSOR WITH RETURN FOR vStmt;
SET vTmp = ‘SELECT count(*) as RowCount,’||pTableName||’ as TblName ‘||FROM ‘|| pTblName ;
prepare vStmt from vTmp;OPEN c1;
END
จากตัวอย่างเป็นการส่งชื่อ Table มาทำการ Count หา Row ที่มีอยู่ ผลลัพธ์ได้จะมีเป็น
call SP_COUNT_ROW(‘CUSTOMERS’)
RowCount TableName
———– ———————
332,456 CUSTOMERS
ที่น่าแปลกใจก็คือมี Type variable “Statement” ด้วยเรอะ