GBASE南大通用分享——什么是准备语句

本文介绍了如何在GBase8sESQL/C中使用动态SQL语句,包括其限制条件(如不能包含INTOvariable子句和使用问号作为占位符),以及如何通过PREPARE语句进行动态准备,同时提到对于UPDATE和DELETE语句的特殊处理。还讨论了多语句列表的优势,以提高性能。
摘要由CSDN通过智能技术生成

在形式上,动态 SQL 语句像任何其他写入程序的 SQL 语句一样,除了它不可包含任何主 变量的名称之外。

准备好的 SQL 语句有两个限制。首先,如果它是 SELECT 语句,则它不可包括 INTO variable 子句。INTO variable 子句指定将列数据放入其内的主变量,而不允许在准备 好的对象的文本中使用主变量。其次,不论主变量的名称通常出现在表达式中的任何位置, 都将问号(?)写作 PREPARE 语句中的占位符。仅 PREPARE 语句可指定问号(?)占位 符。

您可使用 PREPARE 语句以此形式为执行准备语句。使用 GBase 8s ESQL/C编写下列示例:

此示例中的两个问号指示当执行该语句时,在那两个位置使用主变量的值。

您可动态地准备几乎任何 SQL 语句。您唯一不可准备的语句就是与动态 SQL 和游标管理 直接相关联的语句,诸如 PREPARE 和 OPEN 语句。在您准备 UPDATE 或 DELETE 语 句之后,最好测试 SQLWARN 的第五个字段来查看您是否使用了 WHERE 子句(请参 阅 SQLWARN 数组)。

准备语句的结果是表示该语句的数据结构。此数据结构与产生它的字符串不一样。在 PREPARE 语句中,您赋予该数据结构一个名称;它是前面示例中的 query_2。使用此名称 来执行准备好的 SQL 语句。 

PREPARE 语句不将字符串限制于一个语句。它可包含多个用分号分隔的 SQL 语句。下列 示例展示用 GBASE南大通用数据库GBase 8s ESQL/C 编写的相当复杂的事务:

当执行此语句的列表时,主变量必须为六个占位的问号提供值。虽然设置多语句列表更为 复杂,但由于在程序与数据库服务器之间发生更少的交换,因此性能往往更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值