【问题标题】:CROSS JOIN in DB2 v8 for z/OSDB2 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

【问题讨论】:

    标签: linq db2 entity-framework-5 mainframe


    【解决方案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。感谢您的评论!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多