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

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

 2008-09-09 16:30:15 来源:WEB开发网   
核心提示: 这次,粗体的突出显示指出了脚本的成功执行和未成功执行之间的区别,DB2 v7.2 中的高级 SQL 过程脚本编制(6),象预期的那样,查看脚本是如何失败的,SELECT 语句“从未发生”(总体上,DB2 只返回复合原子语句的执行是成功还是失败),并以我们定制的错误消

这次,粗体的突出显示指出了脚本的成功执行和未成功执行之间的区别。象预期的那样,查看脚本是如何失败的,并以我们定制的错误消息“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.

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

Tags:DB 高级 SQL

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