动态SQL语句的处理

通常,应用程序提示用户输入SQL语句和语句中使用的主变量的值。然后,神通数据库分析SQL语句,确定它符合语法规则。

下一步,神通数据库绑定主变量到SQL语句。也就是说,神通数据库得到主变量的地址,这样它就可以从主变量读取值,或者把值写到主变量中去。

然后,神通数据库执行SQL语句。也就是说,神通数据库执行SQL语句要求的操作,比如,从一个表中删除元组。

如果需要的话,SQL语句可以用新的输入主变量值多次执行。
动态SQL语句的使用方法

这一小节介绍了四种定义动态SQL语句的方法,简单地描述了每一种方法的用处和局限,然后给出了选择每一种方法的指导方针。

动态SQL命令有四种编程方法,按照通用性从低到高排列,也就是说,方法2包含方法1,方法3包含方法2和方法1,依此类推。不过,每一种方法都有它们各自的优势和适合使用的语句。以下是四种方法的列表:

方法1:使用EXECUTE IMMEDIATE语句

动态执行任意一个非查询并且无主变量的SQL语句。

方法2:使用PREPARE和EXECUTE语句

动态执行任意一个非查询SQL语句或者最多只返回一行结果的查询语句,并且已知输入主变量数目。

方法3:使用PREPARE和游标

动态执行已知选择列表的数目和输入主变量数目的查询语句。

方法4:使用DESCRIPTOR

动态执行未知选择列表的数目和输入主变量数目的查询语句。

注解

选择列表包括列名和查询表达式,如grade + 1,或者 max(grade)等等。

在这四种方法中,方法1和2的功能基本相同的,只不过方法1不能使用输入主变量,方法2可以使用已知个数的输入主变量;而且,在应用时,方法2可能要更为灵活和有效一些。方法4是最灵活的同时也是最复杂的。方法3与方法4的区别可以参考后面8.9、8.10小节。

动态命令中最简单的就是非查询类命令,它们只简单地返回''成功''或''失败'',而不返回其他结果值。非查询类命令包括所有的DDL和DCL语句以及除SELECT之外的其它DML命令。