登录
PREPARE
PREPARE — 准备语句以执行
语法
PREPARE prepared_name FROM string
描述
PREPARE
准备一个动态指定为字符串的语句以执行。这与直接 SQL 语句PREPARE不同,后者也可以在嵌入式程序中使用。EXECUTE命令用于执行任一类型的准备语句。
参数
prepared_name
#准备查询的标识符。
字符串
#一个文字字符串或包含一个可准备 SQL 语句的主机变量,其中之一为 SELECT、INSERT、UPDATE 或 DELETE。使用问号 (
?
) 作为执行时要提供的参数值。
备注
在典型用法中,*字符串
*是对包含一个动态构造的 SQL 语句的字符串的主机变量引用。文字字符串的情况不太有用;你也可以直接编写一个直接 SQLPREPARE
语句。
如果你确实使用了一个文字字符串,请记住,你可能希望包含在 SQL 语句中的任何双引号都必须写成八进制转义 (\042
),而不是通常的 C 惯用语\"
。这是因为字符串位于EXEC SQL
部分中,所以 ECPG 词法分析器根据 SQL 规则而不是 C 规则对其进行分析。任何嵌入的反斜杠稍后都将根据 C 规则进行处理;但\"
会导致立即出现语法错误,因为它被视为结束文字。
示例
char *stmt = "SELECT * FROM test1 WHERE a = ? AND b = ?";
EXEC SQL ALLOCATE DESCRIPTOR outdesc;
EXEC SQL PREPARE foo FROM :stmt;
EXEC SQL EXECUTE foo USING SQL DESCRIPTOR indesc INTO SQL DESCRIPTOR outdesc;
兼容性
PREPARE
在 SQL 标准中指定。