gpt4 book ai didi

oracle - 执行包时出现错误

转载 作者:行者123 更新时间:2023-12-02 06:18:58 27 4
gpt4 key购买 nike

表结构:

Name       Null Type         
---------- ---- ------------
DPT_NO NUMBER
SALARY NUMBER(10)
PERIOD VARCHAR2(10)
START_DATE DATE
END_DATE DATE

封装:

CREATE OR REPLACE package body salary_sal AS
PROCEDURE find_sal(c_dpt_no salary.dpt_no%TYPE) IS
c_sal salary.salary%TYPE;
BEGIN
SELECT salary INTO c_sal
FROM salary
WHERE c_dpt_no= 108;
dbms_output.put_line('Salary: '|| c_sal);
END find_sal;
END salary_sal;

在执行上面时,我收到以下错误

Error: PL/SQL: Compilation unit analysis terminated
Error(1,14): PLS-00201: identifier 'SALARY_SAL' must be declared
Error(1,14): PLS-00304: cannot compile body of 'SALARY_SAL' without its specification.

最佳答案

您缺少包裹声明。这个想法是分离包的声明(“头”,如果你愿意的话),这样其他包/过程/函数就可以从主体(实现)中对其进行编译。

就您而言,您需要类似的东西:

CREATE OR REPLACE package salary_sal AS
PROCEDURE find_sal(c_dpt_no salary.dpt_no%TYPE);
END salary_sal;

现在,一旦声明了包,您就可以创建它的主体:

CREATE OR REPLACE package body salary_sal AS
PROCEDURE find_sal(c_dpt_no salary.dpt_no%TYPE) IS
c_sal salary.salary%TYPE;
BEGIN
SELECT salary INTO c_sal
FROM salary
WHERE c_dpt_no= 108;
dbms_output.put_line('Salary: '|| c_sal);
END find_sal;
END salary_sal;

关于oracle - 执行包时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20280148/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com