# 准备

PREPARE — 准备执行语句

# 概要

PREPARE prepared_name FROM string

# 描述

准备准备一个动态指定为字符串的语句以供执行。这不同于直接的SQL语句准备,也可以在嵌入式程序中使用。这执行command 用于执行任何一种准备好的语句。

# 参数

准备好的名字

准备好的查询的标识符。

细绳

包含可准备的 SQL 语句的文字字符串或主变量,SELECT、INSERT、UPDATE 或 DELETE 之一。使用问号 (?) 用于在执行时提供的参数值。

# 笔记

在典型的使用中,*细绳*是对包含动态构造的 SQL 语句的字符串的主变量引用。文字字符串的大小写不是很有用;你还不如直接写一个SQL准备陈述。

如果您确实使用文字字符串,请记住,您可能希望在 SQL 语句中包含的任何双引号都必须写为八进制转义 (\042) 不是通常的 C 习语\".这是因为字符串在一个执行 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 标准中指定。

# 也可以看看

执行