我想執行我下面的程序無效的SQL語句,但一直得到錯誤(ORA-00900:無效的SQL語句)ORA-00900:對於Oracle過程
CREATE OR REPLACE PROCEDURE RESETUSERSESSION (run IN VARCHAR2)
IS
cursor usersessiondetail_cur IS
SELECT usd.CLIENTID,usd.OPERID,usd.REGISTER,usd.MACHINE_ID,usd.SESSIONNUMBER
FROM cashiering_dev.CSH_USER usr, cashiering_dev.CSH_USERSESSIONDETAIL usd
WHERE usr.clientid = usd.clientid
AND usr.operid = usd.operid
AND usr.register = usd.register
AND usr.machine_id = usd.machine_id
AND usr.sessionnumber = usd.sessionnumber
AND usr.Machine_ID = 'basrytest'
AND usd.LOGOFFDATETIME IS NULL;
BEGIN
OPEN usersessiondetail_cur;
FOR vItems in usersessiondetail_cur
LOOP
EXECUTE IMMEDIATE 'UPDATE csh_UserSessionDetail
SET ClientID =vItems.CLIENTID
WHERE ClientID =vItems.CLIENTID
AND OperID =vItems.OPERID
AND Register =vItems.REGISTER
AND Machine_ID =vItems.MACHINE_ID
AND SessionNumber =vItems.SESSIONNUMBER';
END LOOP;
CLOSE usersessiondetail_cur;
END;
當你使用'cursor for'循環時,不要顯式地打開/關閉遊標('OPEN usersessiondetail_cur')。另外在這種情況下,絕對不需要使用動態SQL('UPDATE'語句)。 –
動態SQL完全沒用。你爲什麼使用它? –
您是否獲得了錯誤嘗試編譯的程序,還是真的試圖執行它的時候?無論哪種方式,你怎麼做 - 客戶端和命令等?什麼是你得到的完整的錯誤堆棧? (你爲什麼要使用循環,而不是僅僅進行一次更新?你的'run'參數是什麼? –