免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2071 | 回复: 3
打印 上一主题 下一主题

DB2 UDB有没有SQL块的写法?请教一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-06 20:54 |只看该作者 |倒序浏览
DB2 UDB有没有SQL块的写法?不想写存储过程。偶试了一阵子没有找到,麻烦帮忙。
比如能实现类似功能的:
......
declare aaa int;
set aaa = 1
select 'result'  from sysibm.sysdummy1 where aaa=1;
......


或者有类似功能的其它写法?谢谢

[ 本帖最后由 zjsharp 于 2006-11-6 20:55 编辑 ]

论坛徽章:
11
数据库技术版块每日发帖之星
日期:2016-06-25 06:20:00数据库技术版块每日发帖之星
日期:2016-06-24 06:20:00数据库技术版块每日发帖之星
日期:2016-05-03 06:20:00数据库技术版块每日发帖之星
日期:2016-04-21 06:20:00数据库技术版块每日发帖之星
日期:2016-01-23 06:20:00数据库技术版块每日发帖之星
日期:2015-12-03 06:20:00综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-19 06:20:00数据库技术版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2016-07-30 06:20:00
2 [报告]
发表于 2006-11-06 21:37 |只看该作者
declare可以用!
set好象是procedure里面的赋值语句呀!

论坛徽章:
0
3 [报告]
发表于 2006-11-06 22:24 |只看该作者
找到一种马马虎虎的方法,凑合用用,使用dynamic compound statement....
BEGIN ATOMIC
    SQL-variable-declaration;
    condition-declaration;
    SQL-routine-statement;
END
不过这里的sql-routine-statement可以是insert,但不能是独立的select语句来返回结果集, 只好把结果集插入临时用的表算了。

还有什么好方法就请大家补充吧。

[ 本帖最后由 zjsharp 于 2006-11-6 22:38 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-11-07 19:32 |只看该作者
SET 也可以用于SQL PL, 找了个例子:

While the SQL PL can command a variety of SQL commands, a SELECT statement will not be returned to the calling program (either CLP or an application) as a open cursor that records can be fetched from. From a user perspective, issuing a SELECT statement within a BEGIN ATOMIC block will not return a result set, while outside of the block it will. For instance, if the SQL PL in figure 15-29 was modified to place the SELECT statement outside the control block, no result set would be returned when you issued the DB2 command (Figure 15-31):

Figure 15-31 SQL PL with no output

  1. CONNECT TO DB2CERT@
  2. DROP TABLE TEST@
  3. CREATE TABLE TEST (NUMBER INT)@

  4. BEGIN ATOMIC
  5.   DECLARE I INT DEFAULT 1;
  6.   WHILE I <= 10 DO
  7.     INSERT INTO TEST VALUES(I);
  8.     SET I = I + 1;
  9.   END WHILE;
  10.   SELECT * FROM TEST;
  11. END@

  12. QUIT@
复制代码

Normally you would use SQL PL blocks to apply complex logic to INSERT, UPDATE, and DELETE statements. If you do need to see the results of these statements, you must issue the SELECT outside the scope of the SQL PL block. However, you can use a SELECT statement within an SQL PL block to calculate values, find values, or for any other purpose other than to display results.

[ 本帖最后由 lklgdkp 于 2006-11-7 21:48 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP