返回首页

gbase数据、南大通用产品文档:GBase8agbase_stmt_prepare

更新日期:2024年09月11日

 摘要:
为执行操作准备SQL 字符串。并返回状态值。字符串长度应由“length”
参量给出。字符串必须包含1 条SQL 语句。不应为语句添加终结用分号(‘;’)
或\g。
通过将问号字符“?”嵌入到SQL 字符串的恰当位置,应用程序可包含SQL
语句中的一个或多个参数标记符。
标记符仅在SQL 语句中的特定位置时才是合法的。例如,它可以在INSERT
语句的VALUES()列表中
(为行指定列值)

或与WHERE 子句中某列的比较部分
(用
以指定比较值)
。但是,对于ID(例如表名或列名)
,不允许使用它们,不允许



GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 63 -
指定二进制操作符(如等于号“=”
)的操作数。后一个限制是有必要的,原因
在于,无法确定参数类型。一般而言,参数仅在DML(数据操作语言)语句中才
是合法的,在DDL(数据定义语言)语句中不合法。
执行语句之前,
必须使用gbase_stmt_bind_param(),
将参数标记符与应用
程序变量绑定在一起。
 语法:
int gbase_stmt_prepare(GBASE_STMT *stmt, const char *query,
unsigned long length);
 参数:
 返回值:
如果成功处理了语句,返回0。如果出现错误,返回非0 值。
 错误
CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
CR_OUT_OF_MEMORY


内存溢出。
CR_SERVER_GONE_ERROR

GBase 服务器不可用。
CR_SERVER_LOST


查询过程中,与服务器的连接丢失。
CR_UNKNOWN_ERROR


出现未知错误。

用 CREATE DATABASE 语句创建数据库的用户为该数据库设立日志记录状态或缓冲方
式。有关 CREATE DATABASE 语句的更多信息,请参阅《GBase 8s SQL 指南:语法》。

如果 CREATE DATABASE 语句不指定日志记录状态,那么创建无日志记录的数据库。
只有数据库服务器管理员可以更改日志记录状态。
管理数据库日志记录方式描述了该主题。
普通用户不能更改数据库日志记录状态。
如果数据库不使用日志记录,那么无需考虑是已缓冲还是未缓冲日志记录更为适当。如果
您为数据库指定了日志记录但没有为其指定缓冲方式,那么缺省为未缓冲日志记录。
用户可以在会话期间从未缓冲日志记录切换到已缓冲(但不符合 ANSI 标准)日志记录,
也可以从已缓冲日志记录切换到未缓冲日志记录。应用程序中的 SET LOG 语句将执行该
切换。有关 SET LOG 语句的更多信息,请参阅《GBase 8s SQL 指南:语法》。

您可在 SPL 例程中使用任何 SQL 表达式,除了聚集表达式以外。GBase 8s SQL 指南:
语法 提供 SQL 表达式的完整语法与描述。
下列示例包含 SQL 表达式:
var1
var1 + var2 + 5
read_address('Miller')
read_address(lastname = 'Miller')
get_duedate(acct_num) + 10 UNITS DAY
fname[1,5] || ''|| lname '(415)' || get_phonenum(cust_name)