浅析 PB 下动态 SQL 语句
PB 是目前最流行的数据库开发工具之一。PB 提供了在程序代码中加入嵌入式 SQL 语句的功
能来支持对数据库的访问。但这种嵌入式 SQL 语句只能支持一些固定的标准的 SQL 语句,
即在进行程序代码编译处理时这些 SQL 语句必须是确定的,例如:对哪张表哪几个字段进
行操作在程序代码中是固定写明的,另外这种方式也不能执行像 Creat Table,Creat Database
等这些数据库定义的语句(DDL)。
因此这种嵌入式 SQL 语句在实际应用中有一定的局限性。为克服这种方式的局限性,可以
使用 PB 提供的动态 SQL 语句,这种对数据库访问的方式可以完成嵌入式SQL 语句无法实现
的功能。如建库、建表这一类的数据库定义语句(DDL);其次,由于动态 SQL 语句允许在执
行时才确定到底要执行怎样的 SQL 语句,因此使用动态 SQL 语句可以使程序实现参数化设
计,具有很大的灵活性和通用性。
一、动态 SQL 语句的应用分析 PB 提供了四种格式的动态 SQL 语句,每种格式都有自己不同
的特点和作用。下面我们对各种格式的具体使用方法分别加以说明。
(一)第一种格式
当执行没有输入参数并且没有返回结果集的 SQL 语句时可以使用这种格式,这种格式使
用比较简单,其实现的操作也比较少。
1
EXECUTE IMMEDIATE SQLStatement{USING TransactionObject};
其中 SQLStatement 是要执行的 SQL 语句,可以直接用引号将要执行的 SQL 引起来用,或
者用字符串变量的形式提供 SQL 语句。通过使用字符串变量可以在具体执行的时候才指定
要执行什么样的 SQL 语句。TransactionObject 是用户所使用的事务对象,缺省为 SQLCA。
2
①建立一张数据库表(base),SQL 语句的表述用引号引起来直接使用。
EXECUTE IMMEDIATE‘CREATE TABLE base(code char(6),name char(30))’USING SQLCA;
②执行对数据库记录的操作,在表 base 中插入一条记录,SQL 语句通过字符串变量传递
执行语句。
STRING lsSQL
LsSQL=”INSERT INTO TABLE base VALUES(’320201’,’市中区支行’)”
EXECUTE IMMEDIATE:lsSQL;
(二)第二种格式