數據庫應用程序通常進行壹項確定的工作 在編寫和編譯時就可以確定完整的SQL語句 但是當需要使用PowerBuilder不支持的嵌入SQL語句 或者在編譯時不能確定SQL語句的具體格式和參數時 只能在程序運行過程中構造SQL語句 需要使用動態SQL語句 以Format 動態SQL語句為例 使用格式如下 DECLARE Cursor | Procedure DYNAMIC CURSOR | PROCEDURE FOR DynamicStagingArea ;
PREPARE DynamicStagingArea FROM SQLStatement {USING TransactionObject} ;
DESCRIBE DynamicStagingArea INTO DynamicDescriptionArea ;
OPEN DYNAMIC Cursor | Procedure USING DESCRIPTOR DynamicDescriptionArea} ;
EXECUTE DYNAMIC Cursor | Procedure USING DESCRIPTOR DynamicDescriptionArea ;
FETCH Cursor | Procedure USING DESCRIPTOR DynamicDescriptionArea ;
CLOSE Cursor | Procedure ;
在使用動態SQL語句時 需準備DynamicStagingArea對象(全局對象SQLSA)和DynamicDescriptionArea對象(全局對象SQLDA) 定義遊標或過程 讀取PREPARE語句中的SQL語句以及語句中說明的參數和類型 執行FETCH語句後 調用相關的函數逐條讀取並處理檢索結果 動態SQL語句雖然解能夠在程序運行過程中構造SQL語句 但在實際應用中較少使用 若SELECT語句的結果序列壹定 可以通過重新指定DataWindow對象的SELECT語句的方法 達到動態修改SQL語句的功能 運用時首先用Describe函數讀取DataWindow對象的SELECT語句 用Replace等函數修改出符合要求的SELECT語句 並且可以增加檢索條件 再用SetSQLSelect函數為DataWindow控件指定修改後的SELECT語句
程序代碼 string sql_string sql_new long start_pos= string old_str //select語句中需要替換的字符串 string new_str //替換字符串 可以是結構相同的表名
lishixinzhi/Article/program/PB/201311/24558