PL/SQL 程序调用

PL/SQL call to procedure

我写了一个 PL/SQL 程序来更新 table 员工的薪水

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)

oracle 显示 ORA-00900: invalid SQL statement

这是错误的调用方式procedure。您可以使用以下方法:

    Begin
    update_employee_salary(1.5);
    End;

在此处阅读更多内容:PL/SQL Procedure

你也可以这样执行,在SQL*PLUS 和SQL-Developer:

EXEC update_employee_salary(1.5)

您可以像以前一样使用 CALL 调用过程。不工作的原因可能与之前的 sql 语句没有用 ; 结束有关。此外还有一条建议:您不应像以前那样使用 oracle/plsql 保留字作为 table 列名称(id 是保留字)。