如何在存储过程SQL Developer上执行命令提示符

时间:2018-08-01 17:54:35

标签: cmd oracle-sqldeveloper

我一直在尝试:

create or replace PROCEDURE "REPLACE" 
IS                                              
BEGIN

  host @"C:\Replace.bat";
  COMMIT;

END;

日志错误:

  

错误:ORA-02083:达姆斯·拉·德·德拉托斯·基恩·埃尔·卡特尔   válido':'

有人可以告诉我怎么了吗?

1 个答案:

答案 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