Я пытаюсь передать dbms_sql.number_table из одной процедуры в другую и затем использовать ее внутри динамического блока plsql. Но приведенный ниже код порождает ошибку как:Использование коллекции внутри динамического sql
Ошибка (6,17): PLS-00306: неправильное количество или типы аргументов при вызове '||'
create or replace
procedure proc1(v_in_table_name varchar2,
v_in_column_name varchar2,
v_in dbms_sql.number_table)
as
plsql_block varchar2(4000);
begin
plsql_block:='declare
begin
FORALL INDX IN 1 ..'||v_in.count||' SAVE EXCEPTIONS
UPDATE '||v_in_table_name||'
Set '||v_in_column_name||'=123 WHERE col2='||v_in||'(INDX)||;
end';
execute immediate plsql_block;
end proc1;
Это не будет работать. вы пробовали это в конце. – XING
Да, я попробую. И это работает –
Не знаете, где вы пробовали coz У меня есть оракул 11gR2, и он дает мне эту ошибку 'PLS-00457: выражения должны быть типа SQL'. Я бы сказал, попробуйте еще раз и опубликуем рабочую версию – XING