我在一个oracle过程中使用了以下代码,它将一个游标(r_cursor)作为OUT参数返回
SELECT userid
INTO v_userid
FROM users u
WHERE lower(u.email) = lower(p_email)
AND lower(u.token) = lower(p_IV);
UPDATE users u
SET u.token = NULL,
u.lastlogin = sysdate()
WHERE u.userid = v_userid;
OPEN r_cursor FOR
SELECT u.firstname,
u.lastname
FROM users u
WHERE u.userid = v_userid;当从oracle调用该过程时,一切都完全正常。
但是,当从.Net应用程序调用该过程时,会引发错误ORA-24338: statement handle not executed。
经过大量测试后,我发现如果从SELECT语句中删除lower(u.token) = lower(p_IV)行,或者从UPDATE语句中删除u.token = NULL,行,游标将返回到.Net应用程序,而不会出现任何错误。
发布于 2011-10-03 20:25:18
当您尝试提取尚未打开的游标时,通常会引发ORA-24338。
例如,如果您的过程在OPEN语句之前引发了异常,则可能会引发此问题。之后,当您尝试从游标中提取数据时,oracle将提高ORA-24338,因为游标从未打开过。
您的PL/SQL语言中是否包含EXCEPTION块(例如,包含WHEN OTHERS ),或者您是否在.net中捕获SQL
https://stackoverflow.com/questions/7633713
复制相似问题