PLSQL编译提示Invalid identifier错误:按员工ID打印信息的存储过程异常
报错原因分析
- 核心错误是你在
DBMS_OUTPUT.PUT_LINE输出内容时,直接使用了employees表的字段名first_name/last_name/email/phone/job_title,这些字段名仅在SELECT查询语句的上下文中有效,离开查询语句后不能直接作为标识符调用,你需要使用之前SELECT INTO赋值的自定义局部变量fname/lname/empemail/ephone/title。 - 额外注意:你定义的
empemail类型为number(10),但实际email字段一般是字符串格式,类型不匹配后续运行也会触发报错,需要调整为对应字符串类型。
修正后完整代码
CREATE OR REPLACE PROCEDURE EmployeeInfo(empid number) IS fname varchar(20); lname varchar(40); -- 邮箱字段类型调整为varchar,长度可根据你表的实际字段长度调整 empemail varchar(50); ephone VARCHAR(10); title varchar(20); BEGIN SELECT first_name,last_name,email,phone,job_title INTO fname,lname,empemail,ephone,title FROM employees WHERE employee_id=empid; -- 输出改为使用已赋值的自定义变量 DBMS_OUTPUT.PUT_LINE( 'First Name: '||fname ); DBMS_OUTPUT.PUT_LINE( 'Last Name: '||lname ); DBMS_OUTPUT.PUT_LINE( 'Email: '||empemail ); DBMS_OUTPUT.PUT_LINE( 'Phone: '||ephone ); DBMS_OUTPUT.PUT_LINE( 'job_title: '||title ); END; / EXECUTE employeeinfo(107);
内容的提问来源于stack exchange,提问作者tensm
相关产品推荐
相关产品推荐

