【问题标题】:Calling Oracle PL/SQL PLS-00201: identifier '001' must be declared调用 Oracle PL/SQL PLS-00201:必须声明标识符“001”
【发布时间】:2011-07-05 02:21:13
【问题描述】:

我正在尝试使用以下标头调用 PL/SQL 脚本:

PL/SQL:

CREATE OR REPLACE PROCEDURE GETQUOTE(i_QUOTEID IN HR.QUOTEID,
                                     o_QUOTE OUT HR.QUOTE)

执行命令:

DECLARE c VARCHAR2(100);

BEGIN

  HR.GETQUOTE("001", c);

END;
/

错误:

declare
c varchar2(100);
begin
HR.GETQUOTE("001", c);
end;

ORA-06550: line 4, column 29:
PLS-00201: identifier '001' must be declared
ORA-06550: line 4, column 1:
PL/SQL: Statement ignored

【问题讨论】:

    标签: oracle plsql ora-06550


    【解决方案1】:

    您使用了错误的引号类型。如果您希望001 成为字符串文字,则需要使用单引号。

    试试这个:

    SELECT '001' FROM dual;
    
    SELECT "001" FROM dual;
    

    【讨论】:

      【解决方案2】:

      使用单引号:

      然后

      检查第一个值是字符串而不是过程中的数字。 你也可以试试 to_number('001') 作为参数

      【讨论】:

        【解决方案3】:

        试试这个:

        declare c varchar2(100);
        
        begin    
          hr.getquote('001', c);    
        end;    
        /
        

        在pl/sql中,字符串必须使用单引号。

        【讨论】:

        • 不,当使用单引号时,我有一个 PLS-00306:在调用 'GETQUOTE' 时参数的数量或类型错误。
        • 我猜问题出在 GETQUOTE 过程中。是否可以看到它的代码?
        • 我也不确定 HR.QUOTEID 类型。你的意思是 HR.QUOTEID%type 吗? HR.QUOTEID 的实际类型是什么?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        • 1970-01-01
        • 2019-12-17
        • 2021-12-22
        • 2016-07-25
        • 2018-08-02
        相关资源
        最近更新 更多