存储过程选择

时间:2012-12-11 16:46:37

标签: sql database oracle

好吧,我一直在尝试构建一个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');
  

第1行的错误:

     

ORA-06553:PLS-306:调用'GET_TIKET'时参数的数量或类型错误

我想要的是从表TIKET获取所有字段,具体取决于我需要的用户!请感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

存储过程中有大量的out参数,你也必须传递它们:

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

另外,我猜功能在这种情况下比程序更好......