DB2 - 错误“不允许使用“WITH ISOLATION USE AND KEEP”子句”

Posted

技术标签:

【中文标题】DB2 - 错误“不允许使用“WITH ISOLATION USE AND KEEP”子句”【英文标题】:DB2 - Error "The "WITH ISOLATION USE AND KEEP" clause is not allowed" 【发布时间】:2018-07-15 08:11:26 【问题描述】:

我们使用的是 DB2(v 9.7,Unix 平台)。我有一个存储过程,其中包含以下 SQL 语句。

declare SOME_DATE             DATE;
declare SOME_INT             Integer;
…
set SOME_DATE = ( Select SOME_COLUMN from SOME_TABLE WHERE ID= IN_PARAM_ID);
set SOME_INT = ( Some query that accesses federated table using nick name);

我想将 WITH UR 添加到获取 SOME_DATE 的第一个 SELECT 语句中。

当我这样做时,proc 无法编译并出现以下错误。

SQL0109N 不允许使用“WITH ISOLATION USE AND KEEP”子句。 SQLSTATE=42601 (42601,-109)

如果我停止访问联合表,proc 编译正常。 如何将 With UR 添加到与在第二次选择中访问昵称/联合表相关的第一个 SELECT 查询?

【问题讨论】:

问题不完整,除非您提供昵称目标的详细信息(即,哪个数据源类型,以及哪些选项用于昵称/服务器/数据源)。一些数据源不支持该语法,并且还有其他记录在案的限制。 @mao 为什么昵称的细节很重要?我没有在访问昵称的查询中使用 WiTH UR。我在获取 SOME_DATE 并且只访问本地表的查询中使用它。 因为细节很重要。事情很少是他们看起来的样子。细节让其他人尝试重现症状。如果您提供最小完整示例来显示症状,那么您可能会找到原因,但其他人可以尝试重新创建、找到解决方法、找到根本原因等。 【参考方案1】:

查询中的某个位置必须有“WITH UR”。请删除它并运行查询。

【讨论】:

以上是关于DB2 - 错误“不允许使用“WITH ISOLATION USE AND KEEP”子句”的主要内容,如果未能解决你的问题,请参考以下文章

具有多个 WITH AS 案例的 DB2 查询未编译

Java通过jdbc连接DB2能使用with as( select ...吗

DB2 with的定义与用法

db2 with ur

db2命令参数with ur

DB2 中的合并查询