2012-11-25 46 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