2016-03-25 2 views
0

я написал процедуру PL/SQL для обновления зарплаты таблицы EmployeePL/SQL вызов процедуры

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) 
) 
/

И это процедура

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; 
/

Когда я пытаюсь вызвать процедуру

CALL update_employee_salary (1.5) 

оракул отображает ORA-00900: invalid SQL statement

+0

Как вы называете эту процедуру? Из SQL \ * Plus? JDBC? ODP.NET? Разработчик SQL? Что-то другое? –

ответ

0

Это неправильный способ позвонить procedure. Вы можете использовать метод ниже:

Begin 
    update_employee_salary(1.5); 
    End; 

Подробнее здесь: PL/SQL Procedure

0

Вы также можете выполнить это так, в SQL * PLUS и SQL-разработчика:

EXEC update_employee_salary(1.5) 
1

Вы можете позвонить процедура с CALL, как вы это делали. Причина неработоспособности может быть связана с предыдущим оператором sql, который не был закрыт с;. Кроме того, совет: вы не должны использовать зарезервированные слова oracle/plsql в качестве имени столбца таблицы, как и вы (id - зарезервированное слово).