Я создал и сохранил процедуру в SQLDeveloper.Я могу назвать это, и это работает как ожидалось.Однако, если я пытаюсь использовать его в цикле for для набора таблиц, я получаю ошибку:
ORA-06512: в строке 10
00000 - «неверный оператор SQL»
Это процедура:
create or replace PROCEDURE ADD_PARAMETERS
(
TBL_NAME IN VARCHAR2
) AS
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE '||TBL_NAME||' ADD(FB_AREA_HA Float)';
EXECUTE IMMEDIATE 'UPDATE '||TBL_NAME||' SET FB_AREA_HA = FB_AREA/10000';
END ADD_PARAMETERS;
А вот цикл for с процедурой
SET SERVEROUT ON
DECLARE
sql_stmnt VARCHAR2(400);
BEGIN
FOR x in (SELECT * FROM all_tables WHERE table_name LIKE 'BBX_%')
LOOP
sql_stmnt := 'EXECUTE ADD_PARAMETERS('''||x.TABLE_NAME||''')';
DBMS_OUTPUT.PUT_LINE(sql_stmnt||';');
EXECUTE IMMEDIATE sql_stmnt;
END LOOP;
END;
В чем причина этой ошибки?Я почти уверен, что это не строка 10, хотя ...