Нужна помощь с PL SQL Query [Execute Immediate] - PullRequest
2 голосов
/ 17 февраля 2011

У меня есть этот запрос

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);

Я пытаюсь Google, но не могу найти проблему.

1 Ответ

4 голосов
/ 17 февраля 2011

Используйте 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...