gpt4 book ai didi

stored-procedures - 存储过程尝试读取未提交的数据,尽管将隔离级别指定为读取已提交

转载 作者:行者123 更新时间:2023-12-02 01:08:49 25 4
gpt4 key购买 nike

我有一个尝试读取未提交数据的存储过程,尽管将隔离级别指定为已提交读取 (*CS)。下面是我的存储过程。

CREATE PROCEDURE SP_TEST_DATA_GET ( IN P_PROCESSNM VARCHAR(17) , 
IN P_Status char(1))
RESULT SETS 1
LANGUAGE SQL
SET OPTION COMMIT=*CS


P1 : BEGIN

DECLARE CURSOR1 CURSOR WITH RETURN FOR
SELECT DATA
FROM IAS_TEST_DATA
WHERE ( PROCESSNM IS NULL OR PROCESSNM = P_PROCESSNM )
AND Status=P_Status ;


OPEN CURSOR1 ;

END P1``

我正在使用 Db2 v6 系列。

如何避免读取未提交的数据,似乎在存储过程中指定隔离级别不起作用。

请指教。

最佳答案

您似乎误解了事务隔离的工作原理。 “读取已提交”的意思是:这个工作单元只能读取其他人提交的数据,并等待直到未提交更改的锁被释放。你可能想研究the manual ;它特别指出“任何被另一个激活组更改的行(或当前被 UPDATE 行锁锁定的行)......在提交之前无法读取”。

在 DB2 for i v6 和更高版本中,您可以在 SELECT 语句中使用 SKIP LOCKED DATA 子句来完成您似乎想要的。

关于stored-procedures - 存储过程尝试读取未提交的数据,尽管将隔离级别指定为读取已提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19456948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com