Выполнение процедуры в Oracle без каких-либо параметров - PullRequest
0 голосов
/ 14 марта 2019

У меня есть следующая процедура в оракуле:

CREATE OR REPLACE PROCEDURE usp_Templates_Load_TruncateRawTables
AS
BEGIN

EXECUTE IMMEDIATE 'TRUNCATE TABLE TBLTEMPLATES_LOAD_OTHEROBJECTS_RAW';
EXECUTE IMMEDIATE 'TRUNCATE TABLE TBLTEMPLATES_LOAD_NOTES_RAW';
EXECUTE IMMEDIATE 'TRUNCATE TABLE TBLTMPLTS_LOAD_INCSTATEMT_RAW';
EXECUTE IMMEDIATE 'TRUNCATE TABLE TBLTMPLTS_LOAD_BALANCESHEET_RAW';
EXECUTE IMMEDIATE 'TRUNCATE TABLE TBLTEMPLATES_LOAD_OTHERBANK_RAW';
END;

Эта процедура не имеет входных или выходных параметров, и я пытался выполнить эту процедуру, как показано ниже:

Execute usp_Templates_Load_TruncateRawTables;

Другой способ, которым я пытался, был:

Begin
usp_Templates_Load_TruncateRawTables;
End;

Но оба раза я получал сообщение об ошибке:

ORA-00942: таблица или представление не существует

ORA-06512: в "TC_OWNER.USP_TEMPLATES_LOAD_TRUNCATERAWTABLES", строка 8

ORA-06512: в строке 1

Как правильно выполнить эту процедуру, чтобы получить правильный вывод.

1 Ответ

0 голосов
/ 14 марта 2019

Разрешение 1 - добавьте имена владельцев / схем

CREATE OR REPLACE PROCEDURE TC_OWNER.usp_Templates_Load_TruncateRawTables
AS
BEGIN

    EXECUTE IMMEDIATE 'TRUNCATE TABLE schema2.TBLTEMPLATES_LOAD_OTHEROBJECTS_RAW';
    . . . . 
END;

схемы могут отличаться, если у исполняющей схемы есть разрешения на исполняемую схему.Я добавил TC_OWNER.usp_Tem... для визуального эффекта

Разрешение 2 - выполнить в качестве владельца этих таблиц

connect schema2/password @sid

выполнить

BEGIN

    EXECUTE IMMEDIATE 'TRUNCATE TABLE TBLTEMPLATES_LOAD_OTHEROBJECTS_RAW';
    . . . . 
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...