(四)第四種格式
當執行有輸入參數並且返回結果集的格式在編譯時無法確定的SQL語句時可以使用第四種格式
PREPARE DynamicStagingArea FROM SQLStatement{USING TransactionObject};
DESCRIB DynamicStagingArea INTO DynamicDescriptionObject;
DECLARE cursor DYNAMIC CURSOR FOR DynamicDescriptionObject;
OPEN DYNAMIC cursor USING DESCRIPTOR DynamicDescriptionObject;
FETCH cursor USING DESCRIPTOR DynamicDescriptionObject;
CLOSE cursor;
其中
將一個表中滿足過濾條件的記錄的所有字段取出來分別進行處理
STRING lsString
INT liInt
DATETIME liTime
LsSQL=
PREPARE SQLSA FROM lsSQL;
DESCRIB SQLSA INTO SQLDA;∥SQLDA中含有輸入參數的描述
DECLARE cursor_base DYNAMIC CURSOR FOR SQLSA;
SetDynamicparm(SQLDA
OPEN DYNAMIC cursor_base USING DESCRIPTOR SQLDA;
FETCH cursor_base USING DESCRIPTOR SQLDA;
DO WHILE SALCA
FOR liInt=
CHOOSE CASE SQLDA
CASE Typestring!
lsString=GetDynamicString(SQLDA
∥處理該字符型的字段
CASE TypeDateTime
LsDateTime=GetDynamicDateTime(SQLDA
∥處理該日期型的字段
… ∥處理其他類型的字段
… END CHOOSE
NEXT
∥將一條記錄的所有字段取完後作相應的處理
FETCH cursor_base USING DESCRIPTOR SQLDA;
LOOP
CLOSE cursor_base;
二
從上面的說明和舉例中可以看出動態SQL的特點是功能強
[
From:http://tw.wingwit.com/Article/program/PB/201311/24648.html