我正在使用PLSQL創建一個基於查詢另一個表來更新表的過程,並且我正在使用一個循環來達到此目的。爲了測試,我暫時擱置了程序代碼,並試圖使以下腳本正常工作。但它會根據微小的調整繼續拋出錯誤,包括「遇到符號」文件結尾「」或「無效SQL語句」。我哪裏錯了?PL/SQL腳本拋出錯誤
DECLARE CURSOR cur IS
SELECT * FROM Summary;
BEGIN
FOR rec in cur
LOOP
UPDATE Award
SET monthly_sales = (
SELECT COUNT(*)
FROM Sales
WHERE employee_id = rec.employee_id
AND to_char(Sales.SALES_DATE,'YY/MM')=to_char(SYSDATE,'YY/MM')
)
WHERE Summary.employee_id = rec.employee_id
END LOOP
END;
/
使用'AND trunc(Sales.SALES_DATE,'month ')= trunc(SYSDATE,'month')',那麼'to_char'在格式字符串中有兩位數的年份。如果您的銷售表曾經包含超過100年的數據,您可能會從一個多世紀的數據中獲益,儘管此錯誤需要很長時間才能顯現。 – Sentinel
對於@boneist點,您可以在純SQL中執行此操作,這將比循環中的逐行更新更快。 – Wolf