我在我的代码中使用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控制中心执行相同的查询时它正在工作
请帮我解决这个问题
答案 0 :(得分:1)
PubLib是你的朋友: - )
SQL0243N
SENSITIVE游标&lt; cursor-name&gt;无法为指定的SELECT语句定义。<强>解释强>
光标&lt; cursor-name&gt;定义为SENSITIVE,但SELECT语句的内容要求DB2构建游标的临时结果表,并且DB2不能保证在此游标外部进行的更改将是可见的。当查询的内容使结果表为只读时,会出现这种情况。例如,如果查询包含连接,则结果表是只读的。在这些情况下,必须将游标定义为INSENSITIVE或ASENSITIVE。
无法处理该声明。
用户回复:
更改查询内容以生成非只读结果表,或将光标类型更改为INSENSITIVE或ASENSITIVE。
如果无法更改光标类型,请查看物化查询表的使用。这些类似于视图,但也为数据提供临时后备存储,因此它不会被查询类型强制为只读。
这是否有助于您强制用户只读的情况,我不完全确定,但您可能能够对物化数据和实际数据拥有不同的权限(遗憾的是,我没有对这些工作做过很多工作,当然也没有将权限锁定到只读级别)。