DB2 v7.2 中的高级 SQL 过程脚本编制
2008-09-09 16:30:15 来源:WEB开发网这次,粗体的突出显示指出了脚本的成功执行和未成功执行之间的区别。象预期的那样,查看脚本是如何失败的,并以我们定制的错误消息“Script is for MON & FRI only!”来显示“应用程序引起的错误 SQL0438N”。因为存在这个错误,所以 HELLO 表中没有插入任何行,并且随后的 DELETE 语句没有找到任何可删除的内容,从而产生一个对我们的需求无害的 SQL 警告。
研究复合 SQL
再次查看 步骤 1中的代码。BEGIN ATOMIC 和 END@ 表示一个 DB2 复合原子 SQL 语句。通过使用复合 SQL 语句,可以将几个 SQL 语句合并为一个语句,并使 DB2 把整个脚本主体当作一个非全有即全无(all-or-nothing)的语句(象一个事务)。
正如上面的示例阐述的那样,您可以在一个脚本中混合使用复合 原子和常规 SQL 语句来实现所期望的最终结果。使用复合原子 SQL 语句还让您使用 SQL 过程语言元素。
在脚本编制中不支持使用非原子复合 SQL 语句。
终止字符
请注意:在 BEGIN ATOMIC 和 END@ 之间的语句中,@ 符号不作为终止字符是如何使用的。在一个复合语句体中,必须使用分号来表示任何 SQL 语句的结束。基于这个原因,我们必须使用 -td@ 标志,从而使命令解析器能够区分脚本中复合 SQL 语句和其它语句的语句结尾。
复合 SQL 中的 SELECT 语句
如果在复合 SQL 语句中包含 SELECT 语句,那么 SELECT 语句的结果不会显示在屏幕上。这是因为对于 shell 来说,SELECT 语句“从未发生”(总体上,DB2 只返回复合原子语句的执行是成功还是失败)。例如,比较以下结果:
脚本代码 结果SELECT 'hello'
FROM sysibm.sysdummy1@
DB20000I The SQL command completed successfully.
1
-------
hello
1 record(s) selected.
BEGIN ATOMIC
SELECT 'hello'
FROM sysibm.sysdummy1;
END@
DB20000I The SQL command completed successfully.
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接