我一直在尝试:
create or replace PROCEDURE "REPLACE"
IS
BEGIN
host @"C:\Replace.bat";
COMMIT;
END;
日志错误:
错误:ORA-02083:达姆斯·拉·德·德拉托斯·基恩·埃尔·卡特尔 válido':'
有人可以告诉我怎么了吗?
答案 0 :(得分:2)
您根本无法做到这一点,至少没有PL / SQL存储过程。
首先,HOST是一个SQL * Plus命令,而不是您可以调用的PL / SQL过程或函数。
如果您要坚持使用存储过程-则取'replace.bat'的内容并用本机PL / SQL重写。
如果您只是必须从数据库本身内部执行该脚本(顺便在其中运行PL / SQL),则可以考虑创建SCHEDULER Job,它将调用SQL * Plus并运行该脚本-假设.bat脚本本身就是SQL * Plus的特征。
如果您想真正从数据库内部接触到操作系统,还可以编写一个存储的Java过程。这将调用JVM,并运行Java代码,并且只要您知道如何编写代码,就可以做几乎所有您想做的事情。
但是。
为获得最佳答案和建议,您需要向我们展示/告诉“ replace.bat”的作用。
关于ORA-02083
编译器看到'@'字符,并进入'哦,我们必须看到一个DB_LINK。因此,在它之后看到的下一个令人困惑的东西是':'字符,这显然对数据库名称不合法,它正试图在不存在的DB_LINk中找到它。
最后一件事:
create or replace PROCEDURE "REPLACE"
REPLACE是保留字,是有原因的。引用对象名称来避开保留字会给您带来更多的问题,或者比解决的问题更多。更好
CREATE OR REPLACE PROCEDURE REPLACE_STUFF