我有一个程序,如:
CREATE OR REPLACE PROCEDURE test is
BEGIN
DBMS_OUTPUT.PUT_LINE('This is a Test');
END;
Run Code Online (Sandbox Code Playgroud)
我想运行存储在当前目录中的一些sql脚本.我可以使用'@ scriptname.sql'从sqlplus运行它们,但是如何从程序中执行此操作?例如:
CREATE OR REPLACE PROCEDURE test is
BEGIN
DBMS_OUTPUT.PUT_LINE('This is a Test');
@scriptname.sql
END;
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用!是否有特定的从pl/sql程序运行sql脚本?
DCo*_*kie 11
通常,您不能因为pl/sql在服务器上的数据库中运行,而sqlplus是客户端进程.服务器甚至不能依赖于与客户端及其文件在同一系统上,更不用说了解如何查找客户端所指的文件.即使支持语法(并且不支持),您的sql脚本也必须位于服务器上,服务器知道并有权访问的位置.
实际上,您可以在SQL*Plus中执行此操作 - 您只需要确保@是该行的第一个字符,例如:
CREATE OR REPLACE PROCEDURE test is
BEGIN
DBMS_OUTPUT.PUT_LINE('This is a Test');
@scriptname.sql
END;
Run Code Online (Sandbox Code Playgroud)
SQL*Plus将读取脚本的全部内容并在过程中的该点插入,然后按照给定的过程创建过程.这意味着你不能拥有SQL*Plus命令scriptname.sql.此外,在数据库上创建的实际过程中不会引用@ scriptname.sql.
| 归档时间: |
|
| 查看次数: |
26674 次 |
| 最近记录: |