2012-12-11 101 views
2

嗯,我一直在試圖建立一個SP,以幫助我得到了一個名爲TIKEt此表中的所有領域,是我的表TIKET:存儲過程中選擇

TABLE TIKET: 
IDTIKET TYPE NUMBER 
NOMBRE TYPE VARCHAR2 
EDITORIAL TYPE VARCHAR2 
AUTOR TYPE VARCHAR2 
EDICION TYPE VARCHAR2 
PRECIO TYPE NUMBER 
CANTIDAD TYPE NUMBER, 
FECHA TYPE DATE default sysdate 
NOMBRE_USER TYPE VARCHAR2

,並在這裏是我的SP代碼:

`create or replace procedure get_tiket 
(
idtiket_ out number, 
nombres_ out varchar2, 
editorial_ out varchar2, 
autor_ out varchar2, 
edicion_ out varchar2, 
precio_ out number, 
cantidad_ out number, 
fecha_ out date, 
nombre_user_ in varchar2 
) 
is 
begin 
select idtiket, nombre, editorial, autor, edicion, precio, cantidad, fecha into idtiket_, nombres_, editorial_, autor_, edicion_, precio_, cantidad_, fecha_ from tiket 
where nombre_user=nombre_user_; 
end; 

/`

當我運行這段代碼在sqlplus說:「過程創建」我認爲這意味着它沒關係吧?但是當我調用這個Sp時:exec get_tiket('ale');它給了我這個錯誤:

call get_tiket('ale'); 

ERROR at line 1:

ORA-06553: PLS-306: wrong number or types of arguments in call to 'GET_TIKET'

我要的是讓從表TIKET所有字段取決於我需要的用戶!請感謝您的幫助!

回答

1

你有一堆存儲過程輸出參數的,你必須通過他們還有:

DECLARE idtiket number; 
-- other variables 
BEGIN 
    EXEC get_tiket(idtiket, ..... 'ale'); 
END; 

而且,我猜功能會比在這種情況下,程序比較好...

+0

謝謝爲了回覆我的朋友!我只是想你建議的方式,但沒有很好的效果:(我沒有你的建議,並添加以下代碼:'申報idtiket號; nombres VARCHAR2; 編輯VARCHAR2; 作者日期VARCHAR2; edicion VARCHAR2; PRECIO號; cantidad數; 出生日期日期; nombre_user VARCHAR2; 開始 EXEC SP3(idtiket,農佈雷,編輯,作者日期,edicion,PRECIO,cantidad,出生日期, '麥酒'); 結束;' –

+0

做什麼錯誤,你得到? – a1ex07