【发布时间】:2012-02-01 10:34:19
【问题描述】:
我想使用我编写的一些智能程序,但不存储它们。例如,这是一个很大的选择,它检索表的主键:
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;
我不想记住这一点,甚至在每次需要表的约束时都不要输入它。但我不想为此在数据库中创建一个程序,因为它是一个产品数据库,没有其他人需要我的程序。只有我。只是为了开发。
这就是我现在的位置:
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.
... 所以我可以从命令行声明和定义 hello 函数。我可以在声明之后从 begin - end 块调用它,但之后 hello 过程就消失了。
问题:有没有办法让第二个“你好;”工作,所以我可以创建聪明而有用的程序,而不是在数据库本身中制造任何垃圾?
如果这可行,我会用它创建一个文件,并为 sqlplus 设置别名以在启动时执行该文件。
【问题讨论】:
-
您可以创建另一个模式并将您的程序放在那里。不会污染生产用户....
-
你正在 prod DB 上开发 :)
-
好吧,它不是 prod,但很多其他开发者都在使用它,并且不希望污染它。
-
只需创建一个包来存储您的程序。尝试使它们尽可能有用和通用。一个实用程序包不会“污染”数据库。