有什么方法可以通过 TOAD 在本地 运行 PLSQL 过程?

Any way to run PLSQL Procedures locally through TOAD?

在我的公司,只有 DBA 才有权创建视图、存储过程、函数等。现在,每当我想要 运行 复杂的函数或查询时,我都必须在一个脚本中编写所有内容。这使我的脚本变得庞大且重复,因为我的许多脚本都执行类似的功能。

有什么方法可以在本地或个人位置保存和 运行 过程、函数或视图,而不是将其存储在 Oracle 数据库中?这个脚本

create or replace procedure <userSchema>.MyTest AS
BEGIN
    dbms_output.put_line('This is a test');
End;

给出错误

[Error] Compilation (1: 1): ORA-01031: insufficient privileges

如有任何帮助或提示,我们将不胜感激。

将您的代码作为命名块存储在 Toad 中 SQL。

  • 保存起来编辑|添加到命名 SQLs
  • 获取CTRL+N查看 | SQL 命令召回 |命名.

P.S。代码只能在安装了 Toad 的 PC 上访问。

您可以在匿名 PL/SQL 块中定义(临时)过程(或函数):

declare
  var1 integer;
  var2 varchar(100);

  procedure print(p_what varchar)
  as
  begin
     dbms_output.put_line(p_what);
  end;

begin
  print('Doing stuff');
  insert into some_value (id) values (42);
  delete from other_table;
  print('Deleted '||SQL%ROWCOUNT||' rows');

  update foobar 
     set answer = 42;
  print('Updated '||SQL%ROWCOUNT||' rows');
end;
/

但这有一个限制,即该过程仅在 that 块中可见,而不是在它之外。

那么,您可以在匿名 PL/SQL 块中声明该过程:

SQL> DECLARE
  2       PROCEDURE MyTest AS
  3       BEGIN
  4            dbms_output.put_line('This is a test');
  5       END;
  6  BEGIN
  7       MyTest();
  8  END;
  9  /
This is a test

PL/SQL procedure successfully completed.

您设置了一个包含多个文件的目录 - 每个匿名代码块一个。这些实际上将是您的 'procedures'。 SQLPlus 脚本可以根据需要使用@the_procedure.sql 功能调用每个'procedure',同时传递任何需要的参数。

如果您在网络上共享目录位置,那么使用 SQLPlus 的任何人都可以运行 您的任何 'procedures' 以相同的方式。

这对您的可行性在很大程度上取决于您期望的各种程序之间的交互类型。