WEB开发网
开发学院数据库DB2 DB2 v7.2 中的高级 SQL 过程脚本编制 阅读

DB2 v7.2 中的高级 SQL 过程脚本编制

 2008-09-09 16:30:15 来源:WEB开发网   
核心提示: db2 select * from employee where empno='$2' 上面的脚本从 EMPLOYEE 表中选择雇员号(empno)等于从 OS 传递到脚本的第一个参数的记录,然后再选择雇员号与从 OS 传递到脚本的第二个参数相等的记录,DB2 v7.2 中

db2 select * from employee where empno='$2'

上面的脚本从 EMPLOYEE 表中选择雇员号(empno)等于从 OS 传递到脚本的第一个参数的记录,然后再选择雇员号与从 OS 传递到脚本的第二个参数相等的记录。(在 Windows® 平台上,使用 %1 和 %2 分别替代 $1 和 $2。)

然而,使用如上所示那样命令的 Shell 脚本,在脚本内部不能轻松支持如 IF/THEN/ELSE、局部变量、FOR LOOPS 等 SQL 过程元素。这主要是由于代码格式有较多的限制,从而使这种方法只适合于简单的脚本编制。

使用 UDF 的示例

1. 为了准备运行这个示例,我们需要创建一个表,并在其中插入一些值。连接至数据库,然后执行下列 SQL 语句:

CREATE TABLE tab1 (id INT NOT NULL PRIMARY KEY, text VARCHAR(10))
INSERT INTO tab1 VALUES (1, 'one')
INSERT INTO tab1 VALUES (2, 'two')

2. 现在,将下列脚本输入到文本文件中,然后把它保存为 funcparam.ddl:

CREATE FUNCTION getText(key INT)
LANGUAGE SQL
RETURNS VARCHAR(20)
BEGIN ATOMIC
   RETURN SELECT text FROM tab1 t WHERE t.id=key;
END@

3. 创建名为 funcparam.cmd 的第二个文件,它是一个获取参数的 shell 脚本,含有以下内容(使用适用于您平台的版本)

UNIX Windowsdb2 connect to <dbname>
db2 -td@ -f funcparam.ddl
db2 values getText($1)
db2 drop function getText (INT)
db2 connect to <dbname>
db2 -td@ -f funcparam.ddl
db2 values getText(%1)
db2 drop function getText(INT)

上一页  3 4 5 6 7 8 9 10  下一页

Tags:DB 高级 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接