日期:2014-05-17  浏览次数:20852 次

存储过程返回问题
我写了个存储过程
create or replace procedure app_test( sql1 varchar2
  )
  as
  v_sql varchar2(500);

begin
  v_sql:=sql1;
 
  execute immediate v_sql; 
  commit;
end app_test;
主要做插入,删除,更新 用的
如果我想返回 插入了多少行,或者删除了多少行该怎么改 
在网上找了两天了很多人都说用@@ROWCOUNT 都没说怎么用 
我看书上好像也没有用@ 的 以前没接触过,现在才开始学 ,也不知道我写的这个好不好 如果出现异常怎么把异常返回到程序里(java dao调用存储过程)
如果是批量插入有讲究吗 那个大哥大姐能给个例子吗

------解决方案--------------------
LZ已经知道关键了,很简单啊,就顶一个变量去放SQL%ROWCOUNT就好了
SQL code
create or replace procedure app_test( sql1 IN VARCHAR2
  )
  as
  v_sql varchar2(500);
   nber NUMBER;
begin
  v_sql:=sql1;

  execute immediate v_sql;
    nber := SQL%ROWCOUNT;
  commit;

  dbms_output.put_line (nber);
end app_test;

------解决方案--------------------
create or replace procedure app_test( sql1 IN VARCHAR2,nber out NUMBER
)
as
v_sql varchar2(500);
begin
v_sql:=sql1;

execute immediate v_sql;
nber := SQL%ROWCOUNT;
commit;

dbms_output.put_line (nber);
end app_test;


调用时,nber为存储过程的参数。