db2 SQLCODE = -243,SQLSTATE = 36001错误

时间:2011-09-20 09:03:48

标签: db2

我在我的代码中使用DB2Driver,如

Class.forName("com.ibm.db2.jcc.DB2Driver");

我在我的java代码中获得了滚动敏感的结果集。我的SQL查询看起来像这个select distinct day , month , year from XXX。这里的表格XXX仅供我正在使用的用户阅读...所以它给出了以下错误

com.ibm.db2.jcc.a.SqlException: DB2 SQL Error: SQLCODE=-243, SQLSTATE=36001, SQLERRMC=SQL_CURSH200C3, DRIVER=3.51.90 ..我知道这是只读的问题..但是当我尝试在db2控制中心执行相同的查询时它正在工作

请帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

PubLib是你的朋友: - )

  

SQL0243N
SENSITIVE游标< cursor-name>无法为指定的SELECT语句定义。

     

<强>解释

     

光标&lt; cursor-name&gt;定义为SENSITIVE,但SELECT语句的内容要求DB2构建游标的临时结果表,并且DB2不能保证在此游标外部进行的更改将是可见的。当查询的内容使结果表为只读时,会出现这种情况。例如,如果查询包含连接,则结果表是只读的。在这些情况下,必须将游标定义为INSENSITIVE或ASENSITIVE。

     

无法处理该声明。

     

用户回复:

     

更改查询内容以生成非只读结果表,或将光标类型更改为INSENSITIVE或ASENSITIVE。

如果无法更改光标类型,请查看物化查询表的使用。这些类似于视图,但也为数据提供临时后备存储,因此它不会被查询类型强制为只读。

这是否有助于您强制用户只读的情况,我不完全确定,但您可能能够对物化数据和实际数据拥有不同的权限(遗憾的是,我没有对这些工作做过很多工作,当然也没有将权限锁定到只读级别)。