Ես ունեմ այս պարզ ձգան, այն աշխատում է, բայց ինձ մի քանի սխալ է տալիս: շարահյուսությունը ճիշտ է թվում:
Սա իմ կոդը.
create or replace
TRIGGER max_raise
BEFORE UPDATE ON empcopy
FOR EACH ROW
DECLARE
v_max NUMBER := 3000;
BEGIN
IF :new.sal > v_max THEN
raise_application_error(-20002, 'Cannot exceed max value of ' || v_max);
END IF;
END;
Եվ սա իմ սխալներն են.
ՀԱՅՏԱՐԱՐԵԼ
*
ՍԽԱԼ 1-ին տողում՝
ORA-20002. Չի կարող գերազանցել 3000 առավելագույն արժեքը
ORA-06512՝ «SYSTEM.MAX_RAISE», տող 5
ORA-04088. սխալ «SYSTEM.MAX_RAISE» գործարկման ժամանակ
ORA-06512՝ 11 տողում
Սա pl/sql կոդը է, որը ես օգտագործում եմ համատեղ:
DECLARE
v_raise NUMBER;
CURSOR cur1 IS
SELECT a.deptno, a.sal, a.empno, a.ename
FROM empcopy a;
BEGIN
FOR emp IN cur1 LOOP
v_raise := external_raise(emp.deptno, emp.sal);
DBMS_OUTPUT.PUT_LINE('The Employee: ' || emp.ename || ' new salary: '
|| v_raise || ' the previous one was: ' || emp.sal);
UPDATE empcopy SET sal = v_raise WHERE empno = emp.empno;
END LOOP;
END;