oracle存储过程测试,提示 ORA-24344: success with compilation error ,请帮我看看哪一行有问题。

供稿:hz-xin.com     日期:2025-05-21
oracle使用存储过程创建临时表提示ORA-24344: success with compilation error

str:='INSERT INTO TEMP_ACTIVITY(SELECT TO_CHAR(A1."FEndTime",'YYYY')||'年'||TO_CHAR(A1."FEndTime",'MM')||'月'||TO_CHAR(A1."FEndTime",'DD')||'日' AS "ActivityDate",A2."FName" AS "ActivityUser",A1."FSFPlan" AS "ActivityPLan",A3."FName" AS "ActivityCustomer",A1."FDescription" AS "Activity",A1."FAttainment" AS "Attainment",A1."FDescriptios" AS "Descriptios"FROM "TcActivity" A1LEFT JOIN "TsUser" A2 ON A2."FId"=A1."FUserId"LEFT JOIN "YstCustomer" A3 ON A3."FId"=A1."FCustomerId")';把这个sql 输出来看看,多了一个“(”。

PROCEDURE QWW.ADDPHQ 编译错误
错误:提示:值被赋到 'aa' 但从未用于 'AddPHq'
行:6
文本:aa := 1;

语法没问题,但是有编译错误
再一个,你这个过程写的没什么意义

有两处错误:
1.update后的分后
2.rStr NUMBER;要去掉,rStr NUMBER;是多余的,procedure是没有返回值的,就算写成function,也应该写成return number 而不是rStr NUMBER;,
还有就是要在此处写is
改成这样,执行以下修改后的看看:

CREATE OR REPLACE PROCEDURE Rate_Test(Codestr IN Temptable.Pcode%TYPE,
Pstr IN Temptable.Prob%TYPE) IS
BEGIN
SELECT Rper
INTO Rstr
FROM Temptable
WHERE Pcode = Codestr
AND Prob = Pstr;
IF 1 = 1 THEN
BEGIN
UPDATE Temptable SET Createflag = '1';
COMMIT;
END;
END IF;
EXCEPTION
WHEN Other THEN
ROLLBACK;
END Rate_Test;

update最后少了个分号