Я пытаюсь создать временную таблицу в процедуре:
PROCEDURE pr_create_tmp_bp_table(fp_id NUMBER) IS
tbl_name CONSTANT VARCHAR2(20) := 'BP_TO_DELETE';
BEGIN
-- sanity checks removed for readablity
EXECUTE IMMEDIATE
'CREATE GLOBAL TEMPORARY TABLE ' || tbl_name || ' ' ||
'ON COMMIT PRESERVE ROWS AS ' ||
'SELECT * FROM infop_stammdaten.bp';
END;
Если я скопирую блок BEGIN.._END
на рабочий лист SQL, все будет работать нормально. Поэтому я думаю, что пользователь имеет право создать временную таблицу. Если я выполняю процедуру из того же рабочего листа SQL, я получаю
Fehlerbericht -
ORA-01031: Nicht ausreichende Berechtigungen
ORA-06512: in "INFOP_STAMMDATEN.PA_DELETE_FP", Zeile 16
ORA-06512: in Zeile 6
01031. 00000 - "insufficient privileges"
*Cause: An attempt was made to perform a database operation without
the necessary privileges.
*Action: Ask your database administrator or designated security
administrator to grant you the necessary privileges
Строка 16 (Zeile 16) указывает на инструкцию EXECUTE IMMEDIATE, которая создает временную таблицу.
Для меня это выглядит так, как будто у пользователя нет таких же прав на рабочем листе sql, и когда он выполняет процедуру, процедура также находится в своей собственной схеме.
INFOP_STAMMDATEN.PA_DELETE_FP
— это пакет, содержащий процедуруpr_create_tmp_bp_table
? 4. Самое главное - есть ли у вашего пользователя привилегияCRATE TABLE
? - person g00dy   schedule 25.05.2018