0

我有一连串的电话,例如:

DBMS_OUTPUT.put_line(v_1||','||v_2);

我只读取了数据库的权限,并设想将上述语句中的输出写入我以后可能读取的所有计算机上的一个公共位置(使用 VBA)。

我找到了 Oracle 似乎支持的UTL_FILE包,但我无法理解如何让它做我想做的事。

有人可以为我提供一个简单的示例,说明如何同时使用该put_line方法和UTL_FILE包来写入通用位置,例如计算机桌面?

4

1 回答 1

1

假脱机是一项 SQL*Plus 功能,无需调用 UTL_FILE 数据库包即可在桌面上执行。Toad(利用 SQL*Plus 功能)也可以做到这一点。

正如 Justin Cave 所评论的,UTL_FILE 是一个 Oracle 数据库包,用于读取和写入数据库服务器(例如 11g 文档http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_file.htm#BABGGEDF) .

此处记录了 SQL*Plus 的假脱机(与 Oracle 11g 数据库http://docs.oracle.com/cd/E11882_01/server.112/e27507/sqlplus.htm#DFSUG144第 3.1.7 节相关联)。

您可以在 TOAD 中选择“作为脚本运行”,如下所示:

set serveroutput on
spool c:\temp.lst
begin
  dbms_output.put_line('My text');
end;
/
spool off

假脱机是一种客户端功能(SQL*Plus),因此如果想在一个过程(下面,我称之为 my_procedure)中调用 dbms_output,我只需创建一个驱动该过程的 sql 脚本。

可以将其作为 sql 脚本的内容(例如 test_dbms_output.sql):

SET serveroutput ON
spool c:\temp.lst
BEGIN
  my_procedure(params);
END;
/
spool OFF

然后,只需使用 SQL*Plus 运行命令(或 Toad 中的“作为脚本运行”)调用此脚本:

@test_dbms_output.sql;

或者

run test_dbms_output.sql;
于 2014-08-13T20:18:33.430 回答