在它修改某個小區後鎖定我有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