日期:2014-05-16  浏览次数:20895 次

oracle存储过程的问题!求解释!!
过程里面定义了一个in一个out,然后
call testpro1('aaa10',t2),t2就是在过程里定义的out变量或者call testpro1('aaa10',2)都报错。请问
1:有out变量的时候应该怎么call?
2:过程定义的时候,哪种情况下只能返回一个值?哪种情况下可以返回多个值?
3:as与is有什么区别?
4:在过程名(para1.。。。)里定义参数与在as或者is后面定义参数有什么区别?
求高人详细解释下上面4个问题,最好给点代码,谢谢!本人抱着学习的态度求解!再次谢谢!!
只有20分了!跪求热心人帮忙!
------最佳解决方案--------------------
1) 看下面的例子
2) 过程没有返回值.函数(create function ...)可以而且只能有一个返回值。如果需要多个返回值,可以用多个输出参数。
3)as 和 is 没有区别。
4)as和is后面定义参数是局部变量,作用范围只限于本过程(函数)

create or replace procedure myproc(arg1 in int, arg2 out int, arg3 out int)
as
  multiply int := 2;
begin
  arg2 := multiply * arg1;
  arg3 := multiply * arg1 + 1;
end;

declare
  result1 int;
  result2 int;
begin
  myproc(100, result1, result2);
  dbms_output.put_line(result1);
  dbms_output.put_line(result2);
end;

------其他解决方案--------------------
写一个程序块,然后调用 。 
declare 
t2 number;

begin 
 testpro1('aaa10',t2);
end;
------其他解决方案--------------------
如果输出是结果集,那么要怎么来调试?
也写程序块么?具体要怎么写?
求教!~~~~