DB2 v8 for z / OS中的CROSS JOIN

时间:2015-07-14 07:03:07

标签: linq db2 entity-framework-5 mainframe

我正在使用IBM DB2 v8(新功能模式),我使用的是Entity Framework 5.0.0 我有一个LINQ查询,它在我的环境中完美执行,但它不能在其他环境中工作。我尝试通过调试代码来提取为该LINQ查询生成的SQL查询。我尝试在我的环境中执行该SQL(DB2 DB v9.1和DB2驱动程序10.5),它运行良好。对于相同的查询,它在我的另一个环境中不起作用:DB2 DB v8(新功能模式)和DB2驱动程序9.7。它给"CROSS" JOIN一个错误。当我使用LINQ时,查询是一个自动生成的查询,我无法更改。我想在我的第二个环境中运行。下面我给出了我的示例查询。如果有办法解决这个问题,请告诉我?

SELECT t1.MyName, t2.MySalary
FROM Employee t1 CROSS JOIN Salary t2

我收到以下错误:

  

ILLEGAL SYMBOL“CROSS”。一些可能是法律的符号是:   SQLCODE = -104,SQLSTATE = 42601

1 个答案:

答案 0 :(得分:0)

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。