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 標準中指定的。
如果您在文件中發現任何不正確、與您使用特定功能時的體驗不符或需要進一步說明的內容,請使用 此表單 報告文件問題。