好吧,我一直在尝试构建一个 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
and here it's my SP code:
`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 中获取所有字段!请先感谢您的帮助!
最佳答案
你在存储过程中有一堆输出参数,你也必须传递它们:
DECLARE idtiket number;
-- other variables
BEGIN
EXEC get_tiket(idtiket, ..... 'ale');
END;
另外,我想在这种情况下函数会比过程更好......
关于sql - 存储过程选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824677/