DB2 v8 for z/OS 中的交叉连接
Posted
技术标签:
【中文标题】DB2 v8 for z/OS 中的交叉连接【英文标题】:CROSS JOIN in DB2 v8 for z/OS 【发布时间】:2015-07-14 07:03:06 【问题描述】:我正在使用 IBM DB2 v8(新功能模式)并且我正在使用 Entity Framework 5.0.0
我有一个 LINQ 查询可以在我的环境中完美执行,但它在另一个环境中不起作用。我试图通过调试代码来提取为该 LINQ 查询生成的 SQL 查询。我尝试在我的环境(DB2 DB v9.1 和 DB2 驱动程序 10.5)中执行该 SQL,它运行良好。对于相同的查询,它在我的另一个环境中不起作用:DB2 DB v8(新功能模式)和 DB2 驱动程序 9.7。它给出了"CROSS" JOIN
的错误。当我使用 LINQ 时,查询是自动生成的,我无法更改。我也想让它在我的第二个环境中运行。下面我给出了我的示例查询。请让我知道是否有任何方法可以解决这个问题?
SELECT t1.MyName, t2.MySalary
FROM Employee t1 CROSS JOIN Salary t2
我收到以下错误:
非法符号“十字架”。一些可能是合法的符号是:。 SQLCODE=-104,SQLSTATE=42601
【问题讨论】:
【参考方案1】:V8 不支持CROSS JOIN
子句。来自手册:
V8:http://www-01.ibm.com/support/knowledgecenter/SSEPGG_8.2.0/com.ibm.db2.udb.doc/admin/r0000875.htm
连接表
>>-+-table-reference--+-----------+--JOIN--table-reference--ON--join-condition-+-><
| '-| outer |-' |
'-(--joined-table--)--------------------------------------------------------'
V9.5:http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000875.html
连接表
>>-+-table-reference--+-----------+--JOIN--table-reference--ON--join-condition-+-><
| '-| outer |-' |
+-table-reference--CROSS JOIN--table-reference------------------------------+
'-(--joined-table--)--------------------------------------------------------'
请注意较新版本中的新 CROSS JOIN
子句。附带说明一下,不再支持 V8,您应该真正切换到较新的版本;-)
HTH。
【讨论】:
OP 显然在生产中使用 DB2 for z/OS,其中CROSS JOIN
语法直到版本 10 才可用。为什么要在完全不同的平台上测试应用程序,我无法理解。
啊,抱歉,错过了问题的 z/OS 部分。我的链接适用于 LUW。感谢您的评论!以上是关于DB2 v8 for z/OS 中的交叉连接的主要内容,如果未能解决你的问题,请参考以下文章
DB2 for z/OS:CURSOR FOR UPDATE 锁定行为
我想使用 SQL for DB2 z/OS v9 计算模式中所有表中的记录
在 DB2 sql for z/os 中用 0 填充 smallint