sql - 存储过程选择

标签 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

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/

相关文章:

python - SQLite 中的多个唯一列

java - 没有 SQL 的 Javafx 数据库

mysql - GROUP BY 子句必须与聚合函数一起使用?

java - 为什么EJB服务器和客户端在同一事务中看到对方的数据库更改?

php - 按产品过滤订单

sql - 使用游标多次更新 pgsql

sql - 如何获得多列之间的2个最大值?

java - "Column Not Found"错误?

sql - 获取 SQL XML 标记以显示 NULL 值

oracle: INSERT 其中 a=b