在PL SQL Query方面需要帮助[Execute Immediate]

时间:2011-02-16 22:54:53

标签: oracle plsql

我有这个查询

EXECUTE IMMEDIATE 'UPDATE  ' || dest || ' SET COUNTRY_CODE = :v1 WHERE col_id = :v2 returning rowid into :out' 
          USING l_vc_CountryCode, l_vc_ColId
          returning into l_vc_rowid;

l_vc_rowid定义为varchar2(10);

我正在尝试谷歌,但找不到问题。

1 个答案:

答案 0 :(得分:4)

使用sql%rowcount确定更新影响了多少行。

使用PL / SQL函数:

create table tq84_update_test (
  country_code number,
  col_id       varchar2(10)
);


create or replace 
function tq84_update_func (dest         in varchar2, 
                           col_id       in varchar2,
                           country_code in number  
                           )
return varchar2
as
begin

  execute immediate 
 'update ' || dest || ' set country_code = :v1 ' ||
 'where col_id = :v2' 
  using country_code, col_id;

  return sql%rowcount || ' rows updated';
end tq84_update_func;
/


insert into tq84_update_test values (4,'Italy');

exec dbms_output.put_line(tq84_update_func('tq84_update_test', 'foo', 2));

exec dbms_output.put_line(tq84_update_func('tq84_update_test', 'Italy', 9));

select * from tq84_update_test;