EXECUTE IMMEDIATE — 動態準備和執行語句
EXECUTE IMMEDIATE string
EXECUTE IMMEDIATE
會立即準備和執行動態指定的 SQL 語句,而無需檢索結果列。
string
#字面字串或包含要執行的 SQL 語句的主機變數。
在典型用法中,string
是一個主機變數參考,指向包含動態建構的 SQL 語句的字串。字面字串的情況不是很有用;您最好直接編寫 SQL 語句,而無需額外輸入 EXECUTE IMMEDIATE
。
如果您確實使用字面字串,請記住您可能希望包含在 SQL 語句中的任何雙引號都必須寫為八進位轉義符號 (\042
),而不是常用的 C 慣用語 \"
。這是因為字串位於 EXEC SQL
區段內,因此 ECPG 詞法分析器會根據 SQL 規則而不是 C 規則來剖析它。任何嵌入的反斜線稍後將根據 C 規則處理;但是 \"
會導致立即出現語法錯誤,因為它被視為結束字面字串。
以下範例示範如何使用 EXECUTE IMMEDIATE
和名為 command
的主機變數執行 INSERT
語句
sprintf(command, "INSERT INTO test (name, amount, letter) VALUES ('db: ''r1''', 1, 'f')"); EXEC SQL EXECUTE IMMEDIATE :command;
EXECUTE IMMEDIATE
在 SQL 標準中指定。
如果您在文件中發現任何不正確、與特定功能的體驗不符或需要進一步澄清的地方,請使用此表單報告文件問題。