PREPARE — 准备一个语句用于执行
PREPAREprepared_name
FROMstring
prepared_name
预备查询的一个标识符。
string
包含一个可预备语句的一个字符串或一个主变量,可预备语句是 SELECT、INSERT、UPDATE 或者 DELETE 之一。
对于执行时提供的参数值,使用问号(?
)。
在典型用法中,string
是对包含动态构造SQL语句的字符串的主机变量引用。
文字字符串的情况不是很有用;你也可以写一条直接SQL PREPARE
语句。
如果你使用文字字符串,请注意任何你可能希望在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;
SQL 标准中说明了PREPARE
。