查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
盖伊
高级会员
已加入:2009年8月11日 帖子:1281 地点:比利时
|
|
|
|
拥有DB2 V8的人可以为我尝试一下吗?
如果要使并集中的列具有名称,则需要为每个列指定一个关联名称。但是,如果我没记错的话,您只需要在工会的第一回合中就可以做到。在版本9中,您必须全力以赴
这有效
码: |
从中选择来源(
选择dbname,tsname作为tsname,0作为col1, 'TB' as origin 来自sysibm.systables,其中dbname ='DSNDB06'
全部合并
选择数据库名称,名称为tsname,1作为col1, 'TS'作为sysibm.systablespace的来源,其中dbname如DSNDB06'
) A |
这失败了
码: |
从中选择来源(
选择dbname,tsname作为tsname,0作为col1, 'TB' as origin 来自sysibm.systables,其中dbname ='DSNDB06'
全部合并
选择数据库名称,名称为tsname,1作为col1, 来自sysibm.systablespace的'TS',其中的dbname如DSNDB06'
) A |
有人可以在DB2 V8子系统上尝试第二个,并告诉我它是否失败?谢谢 |
|
回到顶部 |
|
 |
盖伊
高级会员
已加入:2009年8月11日 帖子:1281 地点:比利时
|
|
|
|
糟糕,只是注意到我在我的文字DSNDB06之前缺少'。用到处都存在的dbname替换dbname时,必须输入一些错字。
使用DB2 v8的任何人都可以将以下查询粘贴到SPUFI或qmf中,看看它是否给出-206:
码: |
从中选择col1(
从sysibm.sysdummy1中选择'x'作为col1
全部合并
选择“ y” 来自sysibm.sysdummy1
) A |
码: |
COL1在使用的上下文中无效。 SQLCODE = -206,SQLSTATE = 42703,DRIVER = 3.59.81 |
这就是我在DB2 9中得到的
db2的手册在这件事上还不清楚:
V8手册写道: |
UNION和UNION ALL的结果的第n列来自R1和R2的第n列。 |
V9手册写道: |
如果R1的第n列和R2的第n列具有相同的结果列名称,则set操作的结果表的第n列具有相同的结果列名称。否则,未命名set操作结果表的第n列 |
|
|
回到顶部 |
|
 |
苏珊斯·鲍比
高级会员

已加入:2008年7月29日 帖子:1018 地点:印度
|
|
|
|
盖伊,
得到了以下错误信息,
码: |
DSNT408I SQLCODE = -206,错误: COL1不是插入表的列,
更新的表,或从句句中标识的任何表,或不是
触发台触发栏
|
苏珊斯 |
|
回到顶部 |
|
 |
盖伊
高级会员
已加入:2009年8月11日 帖子:1281 地点:比利时
|
|
|
|
好的,谢谢 |
|
回到顶部 |
|
 |
dbzTHEdinosauer
全球主持人

已加入:2006年10月20日 帖子:6967 位置:瓷宝座
|
|
|
|
你有没有尝试过
从中选择A.COL1 |
|
回到顶部 |
|
 |
苏珊斯·鲍比
高级会员

已加入:2008年7月29日 帖子:1018 地点:印度
|
|
|
|
Dbz,
相同的SQLCODE,
码: |
--------- + --------- + --------- + --------- + --------- + --------- + --------- + --------- +
从中选择A.COL1(
从SYSIBM.SYSDUMMY1选择'X'作为COL1
全联盟
选择“ Y” 从SYSIBM.SYSDUMMY1
) A
--------- + --------- + --------- + --------- + --------- + --------- + --------- + --------- +
DSNT408I SQLCODE = -206,错误: A.COL1不是插入表的列,
更新的表,或从句句中标识的任何表,或不是
触发台触发栏
DSNT418I SQLSTATE = 42703 SQLSTATE返回码
DSNT415I SQLERRP = DSNXORSO SQL过程检测错误
DSNT416I SQLERRD = -600 0 0 -1 0 0 SQL诊断信息
DSNT416I SQLERRD = X'FFFFFDA8' X'00000000' X'00000000' X'FFFFFFFF'
X'00000000' X'00000000'SQL诊断信息
--------- + --------- + --------- + --------- + --------- + --------- + --------- + --------- +
|
谢谢,
苏珊斯 |
|
回到顶部 |
|
 |
盖伊
高级会员
已加入:2009年8月11日 帖子:1281 地点:比利时
|
|
|
|
一样。
在两条腿上指定为COL1可以工作:
码: |
从中选择col1(
从sysibm.sysdummy1中选择'x'作为col1
全部合并
从sysibm.sysdummy1选择'y'作为col1
) A |
我遇到这个问题是因为用户有一个QMF proc,它是批量执行的。
用这样的查询
码: |
选择'x1'作为colxyz,从sysibm.sysdummy1选择'x2'
全部合并
从sysibm.sysdummy1中选择'y1','y2'作为colabc |
然后将数据保存为表2。
然后第二个查询。现在第二个查询失败。
结果表2过去有称为colxyz的列&colabc,现在它具有称为“ col1”的列&“ col2”(或者他声称,我无法验证他说的话)好吧,我可以验证它具有col1和col2,但没有“曾经的”。
如果有人想在QMF TSO中执行此操作并查看报告中的标题,我将不胜感激。
我的qmf版本是:
我可以告诉用户修改他的查询,但是他不会感激。
这是一个用户编写的查询:5页长的页面有6个并集,列名分布在不同的并集上。 |
|
回到顶部 |
|
 |
盖伊
高级会员
已加入:2009年8月11日 帖子:1281 地点:比利时
|
|
|
|
仅适用于遇到相同问题的任何人:
IBM写道: |
PK03946:统一结果列名称的可选支持:
在版本8之前,SQLNAME字段中的结果列名称为
包含UNION的语句的SQL反映了该列
语句中第一个子查询的名称或标签。在
版本8,如果使用标签,则DB2返回标签的标签。
第一个子查询中的列。如果不使用标签,则
结果列名称仅在以下情况下返回:
语句中所有子查询都相同 |
另外:在V9中,即使使用了标签,
结果列名称仅在以下情况下返回:
语句中所有子查询都相同
修复:不透明的Zparm:UNION_COLNAME_7 = YES
子选择中仍然不允许这样做,但是从describe(QMF使用的列)出来的列名称是UNION的第一个子查询的列名称。 |
|
回到顶部 |
|
 |
|