2012-11-25 17 views
1
CREATE OR REPLACE procedure verify_employee 
(emp_license IN trkdriver.L#%TYPE) 
IS 
result VARCHAR2(10); 

BEGIN 
select e# INTO result 
from trkdriver where l#='emp_license'; 
END; 
/

以上是我的程序SQL - 什么是错的这个程序执行

SQL> desc trkdriver; 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 

E#          NOT NULL NUMBER(12) 
L#          NOT NULL NUMBER(8) 
STATUS         NOT NULL VARCHAR2(10) 

我试图

SQL> execute verify_employee('10001'); 
BEGIN verify_employee('10001'); END; 

* 
ERROR at line 1: 
ORA-01722: invalid number 
ORA-06512: at "USER1.VERIFY_EMPLOYEE", line 7 
ORA-06512: at line 1 

我做了什么错,我只是想尝试一个简单的程序它将根据我输入的员工许可证ID选择

回答

0

l#是数字,并且您将它与字符串进行比较: ... where l#='emp_license';

1

你必须如下删除''

CREATE OR REPLACE procedure verify_employee 
(emp_license IN trkdriver.L#%TYPE) 
IS 
result VARCHAR2(10); 

BEGIN 
select e# INTO result 
from trkdriver where l#=emp_license; 
END; 
/

结束运行:

execute verify_employee(10001); 
+0

感谢您的答复。但是如何在select语句之后显示结果。 – user1777711

+0

尝试添加'dbms_output.put_line(result);'。在执行之前,您需要运行SET SERVEROUTPUT ON命令。 – Parado