在它修改某个小区后锁定我有Oracle过程,它返回一个光标(r_cursor
),为OUT
参数行是越来越在Oracle
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;
当调用的程序在下面的代码从甲骨文一切工作都很好。
但是,当从.Net应用程序调用该过程时,会引发错误ORA-24338: statement handle not executed
。
大量的测试后,我发现,如果我删除从UPDATE
声明SELECT
陈述或u.token = NULL,
线lower(u.token) = lower(p_IV)
之一,光标返回到.NET应用程序没有任何错误。
当您调用存储过程或使用从存储过程返回的游标时是否发生错误?前者表示OPEN语句从未执行,或者.NET中定义的参数混淆。后者表示在达到它的末尾时从光标中取出,可能是因为光标根本没有返回任何行。 – Codo
使用返回的游标填充数据集时发生错误。 oCon.Open(); oCmd.ExecuteNonQuery(); oDA.Fill(dsCustomer); oDA.Dispose(); 以及对于数据来说,由于oracle过程本身工作正常并返回好结果,所以肯定会返回数据。 – Michel