【问题标题】:Stored Procedure Select存储过程选择
【发布时间】:2012-12-11 16:46:36
【问题描述】:

好吧,我一直在尝试构建一个 SP,以帮助我从名为 TIKEt 的表中获取所有字段,这是我的表 TIKET:

表票:
IDTIKET 类型编号
名词类型 VARCHAR2
社论类型 VARCHAR2
AUTOR 类型 VARCHAR2
EDICION 类型 VARCHAR2
PRECIO 型号
候选人类型号码,
FECHA TYPE DATE 默认 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 中获取所有字段!请感谢您的帮助!

【问题讨论】:

    标签: sql database oracle


    【解决方案1】:

    你在存储过程中有一堆输出参数,你也必须传递它们:

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

    另外,我猜在这种情况下函数会比过程更好......

    【讨论】:

    • 感谢朋友的回复!我只是尝试了您建议的方式,但没有好的结果:(。我按照您的建议做了并添加了以下代码:declare idtiket number; nombres varchar2; editorial varchar2; autor varchar2; edicion varchar2; precio number; cantidad number; fecha date; nombre_user varchar2; begin exec sp3(idtiket, nombre, editorial, autor, edicion, precio, cantidad, fecha, 'ale'); end;
    猜你喜欢
    • 2015-04-01
    • 1970-01-01
    • 2015-05-02
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 2011-02-12
    相关资源
    最近更新 更多