2016-03-25 17 views
0

Ich schrieb einen PL/SQL-Prozedur das Gehalt der Tabelle Mitarbeiter zu aktualisierenPL/SQL-Aufruf von Prozedur

create table Employee 
(ID     VARCHAR2(4 BYTE)   NOT NULL, 
First_Name   VARCHAR2(10 BYTE), 
    Last_Name   VARCHAR2(10 BYTE), 
    Start_Date   DATE, 
    End_Date   DATE, 
    Salary    Number(8,2), 
    City    VARCHAR2(10 BYTE), 
    Description  VARCHAR2(15 BYTE) 
) 
/

Und dies ist das Verfahren

CREATE OR REPLACE PROCEDURE update_employee_salary(
    p_factor IN NUMBER 
    ) AS 
    v_employee_count INTEGER; 
    BEGIN 
     UPDATE employee 
     SET salary = salary * p_factor; 
     COMMIT; 
    EXCEPTION 
    WHEN OTHERS THEN 
     ROLLBACK; 
    END update_employee_salary; 
/

Wenn ich versuche, das Verfahren zu nennen

CALL update_employee_salary (1.5) 

Orakel zeigt ORA-00900: invalid SQL statement

+0

Wie rufen Sie das Verfahren an? Von SQL \ * Plus? JDBC? ODP.NET? SQL Entwickler? Etwas anderes? –

Antwort

0

Es ist falsch, procedure zu rufen. Sie können die folgenden Verfahren verwendet werden:

Begin 
    update_employee_salary(1.5); 
    End; 

Lesen Sie mehr hier: PL/SQL Procedure

0

Sie können auch es wie folgt ausführen, in SQL * Plus und SQL-Entwickler:

EXEC update_employee_salary(1.5) 
1

können Sie rufen eine Prozedur mit CALL wie Sie getan haben. Der Grund für die Nichtfunktion könnte mit einer vorherigen SQL-Anweisung in Verbindung stehen, die nicht mit. Außerdem ein Ratschlag: Sie sollten keine oracle/plsql reservierten Wörter als Tabellenspaltennamen verwenden (Sie haben ein reserviertes Wort).