Это работает:
Declare
v_sql varchar2(500);
v_schema varchar(30);
v_prj_id varchar2(4000):='B00781728,B00781628,B00781611,A43670001';
BEGIN
Dbms_Output.Put_Line('v_prj_id='||v_prj_id);
--
FOR i IN (SELECT trim(regexp_substr(v_prj_id, '[^,]+', 1, LEVEL)) l
FROM dual
CONNECT BY LEVEL <= regexp_count(v_prj_id, ',') + 1
) LOOP
--
Dbms_Output.Put_Line('---------------------');
--
--
v_sql := 'UPDATE ' || i.l|| '.SI_Recipient set email = email ||'';Seshadri.K@iconplc.com''' ;
--
Dbms_Output.Put_Line('v_sql='||v_sql);
--
begin
EXECUTE IMMEDIATE v_sql;
Exception
when others then
Dbms_Output.Put_Line('sqlerrm='||sqlerrm);
End;
--
END LOOP;
END;
/
Вывод:
v_prj_id=B00781728,B00781628,B00781611,A43670001
---------------------
v_sql=UPDATE B00781728.SI_Recipient set email = email ||';Seshadri.K@iconplc.com'
sqlerrm=ORA-00942: la tabla o vista no existe
---------------------
v_sql=UPDATE B00781628.SI_Recipient set email = email ||';Seshadri.K@iconplc.com'
sqlerrm=ORA-00942: la tabla o vista no existe
---------------------
v_sql=UPDATE B00781611.SI_Recipient set email = email ||';Seshadri.K@iconplc.com'
sqlerrm=ORA-00942: la tabla o vista no existe
---------------------
v_sql=UPDATE A43670001.SI_Recipient set email = email ||';Seshadri.K@iconplc.com'
sqlerrm=ORA-00942: la tabla o vista no existe
Total execution time 344 ms
Поскольку в моем экземпляре oracle у меня нет схем B00781728, B00781628, B00781611, A43670001 Я получаю ошибку ORA-00942 Таблица или представление не существует.