oracle创建存储过程时出现了这个问题
create or replace procedure get_tradeinfo(
p_cardid tradeinfo.cardid%TYPE,
p_tradedate tradeinfo.tradedate%TYPE,
customername out userinfo.customername%type,
tradetype out tradeinfo.tradetype%TYPE,
trademoney out tradeinfo.trademoney%TYPE)
is
begin
select userinfo.customername,tradeinfo.tradetype, tradeinfo.trademoney into customername,tradetype,trademoney from userinfo inner join tradeinfo on userinfo.cardid=tradeinfo.cardid where tradeinfo.cardid=p_cardid;
EXCEPTION
when no_data_found then
dbms_output.put_line('不存在该客户!');
end;
DECLARE
v_cardid tradeinfo.cardid%type;
v_tradedate tradeinfo.tradedate%type;--定义变量
v_trademoney tradeinfo.trademoney%type;
v_customername userinfo.customername%type;
v_tradetype tradeinfo.tradetype%type;
begin
v_cardid :='6227266610105112';
v_tradedate :='2017-11-21 09:21:16';
get_tradeinfo(v_cardid,v_tradedate,v_trademoney,v_customername,v_tradetype);
dbms_output.put_line('用户姓名:'||v_customername||',交易金额:'||v_trademoney||',交易类型:'||v_tradetype||'');
end;

尝试了很多次,老是出这个问题
select userinfo.customername,tradeinfo.tradetype, tradeinfo.trademoney into customername,tradetype,trademoney from userinfo inner join tradeinfo on userinfo.cardid=tradeinfo.cardid where tradeinfo.cardid=p_cardid;
这个sql查询到多条数据了呀,如果有多条数据不能直接 select into,可以使用游标遍历
这种写法我是没见过,你怎么在存储过程里还写DECLARE,直接用多个块包着不好吗?如下形式
create or replace procedure 名字(输入输出变量)
is
声明变量
begin
begin
end;
begin
end;
end 名字;
直接块套块就行,还写DECLARE的,我是没见过。
可能是你表没有别名
create or replace procedure get_tradeinfo(
p_cardid tradeinfo.cardid%TYPE,
p_tradedate tradeinfo.tradedate%TYPE,
customername out userinfo.customername%type,
tradetype out tradeinfo.tradetype%TYPE,
trademoney out tradeinfo.trademoney%TYPE)
is
begin
select userinfo.customername,tradeinfo.tradetype, tradeinfo.trademoney into customername,tradetype,trademoney from userinfo inner join tradeinfo on userinfo.cardid=tradeinfo.cardid where tradeinfo.cardid=p_cardid;
EXCEPTION
when no_data_found then
dbms_output.put_line('不存在该客户!');
end;
DECLARE
v_cardid tradeinfo.cardid%type;
v_tradedate tradeinfo.tradedate%type;--定义变量
v_trademoney tradeinfo.trademoney%type;
v_customername userinfo.customername%type;
v_tradetype tradeinfo.tradetype%type;
begin
v_cardid :='6227266610105112';
v_tradedate :='2017-11-21 09:21:16';
get_tradeinfo(v_cardid,v_tradedate,v_trademoney,v_customername,v_tradetype);
dbms_output.put_line('用户姓名:'||v_customername||',交易金额:'||v_trademoney||',交易类型:'||v_tradetype||'');
end;