Я хочу использовать некоторые умные процедуры, которые я написал, но не хранил их. Например вот это довольно большой выбор, который извлекает первичные ключи для таблицы:Как создать процедуры оракула, но не хранить
SELECT cols.table_name, cols.column_name, cols.position, cons.status, cons.owner
FROM all_constraints cons, all_cons_columns cols
WHERE cols.table_name = 'TABLE_NAME'
AND cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position;
Я не хочу, чтобы помнить об этом, даже не вводить его каждый раз, когда мне нужно ограничения таблицы. НО я не хочу создавать процедуру для этого в БД, потому что это база данных prod, и никто другой не нуждается в моей процедуре. Только я. Просто для развития.
Так вот где я сейчас:
SQL> declare procedure hello as begin dbms_output.put_line('Hello world!'); end; begin hello; end;
2/
Hello world!
PL/SQL procedure successfully completed.
SQL> hello;
SP2-0042: unknown command "hello" - rest of line ignored.
... так что я могу объявить и определить функцию привет из командной строки. Я могу вызвать его из начального блока после объявления, но после этого процедура привет исчезла.
Вопрос: есть ли решение сделать второй «привет»; работать, поэтому я могу создавать умные и полезные процедуры и не создавать мусор в самой базе данных?
Если это сработает, я создам файл с этим и сделаю псевдоним для sqlplus для запуска этого файла при запуске.
вы можете создать другую схему и поместить туда свои процедуры. не будет оглашать производственного пользователя .... –
вы разрабатываете на prod DB :) –
хорошо, это не prod, но многие другие разработчики используют его, и нежелательно его загрязнять. – torbatamas