PL/SQL 如何假脱机处理多个文件?
PL/SQL how to spool multiple files?
大家好,
我不明白如何为多个文件的假脱机创建正确的脚本。
我已经阅读了一些关于这个问题的问题,但我无法解决它。
这是我的代码MAIN_PROCEDURE.sql
SET serveroutput ON;
SET trimspool ON;
SET pagesize;
PROCEDURE DINAMIC_SPOOL(file_name VARCHAR2) IS
BEGIN
dbms_output.put_line('spool '|| file_name || '.txt');
dbms_output.put_line('bla bla bla');
dbms_output.put_line('spool off');
END DINAMIC_SPOOL;
BEGIN
file_name:='test_1';
DINAMIC_SPOOL(file_name);
file_name:='test2';
DINAMIC_SPOOL(file_name);
END;
/
EXIT;
不然还有别的方法吗?
希望得到您的回复。
我认为你尝试做的事情不会奏效。
SPOOL 是 SQLPlus 命令,因此只能由 SQLPlus 直接执行。
DBMS_OUTPUT 服务器上 运行 的 PL/SQL 包:其输出由
SQLPlus 并由 SQLPlus 显示,但它在数据库服务器端执行 运行:并且它不能 运行 SQLPlus 命令。
PL/SQL 过程存在于数据库服务器上。您编写访问数据库的过程和程序包,并且可以 - 通过一些努力,例如使用程序包 UTL_FILE- 在数据库服务器上写入文件。
SQL*Plus 存在于客户端。它可以访问数据库并将查询的输出假脱机到客户端上的文件中。但是,它不是完整的脚本语言,没有循环,没有 if/then,没有程序,只是 SQL in in in SQL*Plus.
可以这么说,SQL*Plus 是 SQL 加上一些 formatting/spooling 额外的东西,PL/SQL 是 (P)procedural (L)anguage for (SQL).
大家好, 我不明白如何为多个文件的假脱机创建正确的脚本。 我已经阅读了一些关于这个问题的问题,但我无法解决它。
这是我的代码MAIN_PROCEDURE.sql
SET serveroutput ON;
SET trimspool ON;
SET pagesize;
PROCEDURE DINAMIC_SPOOL(file_name VARCHAR2) IS
BEGIN
dbms_output.put_line('spool '|| file_name || '.txt');
dbms_output.put_line('bla bla bla');
dbms_output.put_line('spool off');
END DINAMIC_SPOOL;
BEGIN
file_name:='test_1';
DINAMIC_SPOOL(file_name);
file_name:='test2';
DINAMIC_SPOOL(file_name);
END;
/
EXIT;
不然还有别的方法吗? 希望得到您的回复。
我认为你尝试做的事情不会奏效。
SPOOL 是 SQLPlus 命令,因此只能由 SQLPlus 直接执行。
DBMS_OUTPUT 服务器上 运行 的 PL/SQL 包:其输出由 SQLPlus 并由 SQLPlus 显示,但它在数据库服务器端执行 运行:并且它不能 运行 SQLPlus 命令。
PL/SQL 过程存在于数据库服务器上。您编写访问数据库的过程和程序包,并且可以 - 通过一些努力,例如使用程序包 UTL_FILE- 在数据库服务器上写入文件。
SQL*Plus 存在于客户端。它可以访问数据库并将查询的输出假脱机到客户端上的文件中。但是,它不是完整的脚本语言,没有循环,没有 if/then,没有程序,只是 SQL in in in SQL*Plus.
可以这么说,SQL*Plus 是 SQL 加上一些 formatting/spooling 额外的东西,PL/SQL 是 (P)procedural (L)anguage for (SQL).