当前位置: 首页 > 知识库问答 >
问题:

PLS-00201:必须声明标识符“salary”

岳时铭
2023-03-14

这是我的程序:

create or replace procedure emp_lookup
 (empno   IN  emp55.empno%TYPE,
  salary  OUT emp55.sal%TYPE,
  empname OUT emp55.ename%TYPE)
is
begin 
  select sal , ename INTO salary, empname
  from   emp55 
  where  empno=empno;

EXCEPTION WHEN NO_DATA_FOUND THEN empname:='null';
  salary:=-1;
END;
SET SERVEROUTPUT ON

DECLARE 
  employee_name emp55.ename%TYPE;
  employee_salary emp55.sal%TYPE;
BEGIN
  emp_lookup (3244,salary,empname);
END;
/
Error starting at line : 3 in command -
DECLARE 
  employee_name emp55.ename%TYPE;
  employee_salary emp55.sal%TYPE;
BEGIN
  emp_lookup (3244,salary,empname);

END;

Error report -
ORA-06550: line 5, column 20:
PLS-00201: identifier 'SALARY' must be declared
ORA-06550: line 5, column 1:
PL/SQL: Statement ignored
execute emp_lookup (3346, salary, empname);
Error starting at line : 16 in command -
BEGIN emp_lookup (3346, salary, empname); END;
Error report -
ORA-06550: line 1, column 27:
PLS-00201: identifier 'SALARY' must be declared
ORA-06550: line 1, column 54:
PL/SQL: Statement ignored

共有1个答案

姜志行
2023-03-14

在调用时,可以使用绑定变量作为out参数传递。

VARIABLE sal NUMBER
VARIABLE name VARCHAR2(20)
execute emp_lookup (3346, :sal, :name)

如果从PL/SQL块内调用过程,则在调用之前应适当声明out变量。

DECLARE
salary emp55.sal%TYPE;
empname emp55.ename%TYPE;
BEGIN
   emp_lookup (3346, salary, empname);
END;
/
 类似资料:
  • 我正在使用SODA for Java存储和检索Oracle12c DB中的文档。我正在效仿这个例子。 这一例外背后的原因将是什么?

  • 所以我一直有这个错误,我不知道发生了什么。我在谷歌上搜索了一下,读了一些关于这个错误的问题,但什么都没用。我只想运行它,这样我就可以完成我的项目。 错误:开始低库存;结束;*第1行错误:ORA-06550:第1行,第9列:PLS-00201:标识符“LOWINVENTORY”必须声明ORA-06550:第1行,第7列:PL/SQL:忽略语句 编辑: 表创建:

  • 为什么会出现这个错误?如果变量声明与列的类型相同,则不应该这样做。nursing_unit_id是varchar2(10)。当ID是NUMBER时,它对我来说是这样工作的; 我得到的错误:错误报告-ORA-06550:第13行,第13列:PLS-00201:必须声明标识符“ISS”

  • 作为标题,我正在Oracle上编写一些存储过程,首先我检查了版本 有结果 ... 并尝试NVL2与常规SQL查询 结果似乎是对的 ... 所以我确认11g确实支持NLV2功能,我现在可以开始编写我的存储过程,如下所示: Oracle告诉我它编译有错误,即 PLS-00201:必须声明标识符“NVL2” 为什么函数在常规查询中工作,但在存储过程中变得未声明?

  • 安装在CentOS 8上。 已尝试两者 Oracle Database Express Edition (XE) 企业版 从这里 https://www.oracle.com/database/technologies/oracle-database-software-downloads.html ords.warhttps://www.oracle.com/database/technologi

  • 这是我成功的存储过程 这是首先生成表的调用 最初,我试图用一些预定义的参数调用存储过程。 这导致错误“PLS-00201:标识符'B100'必须声明” 我是PL/SQL的新手,很难解决这个问题。我尝试添加DECLARE语句 这仍然会导致错误“PLS-00201:必须声明标识符‘B100’”,但它表示“PL/SQL:忽略语句”,然后表示“PLS-00201:必须声明标识符‘Steve’” 进一步挖掘