如何在plsql中使用操作系统命令

2024-12-04 21:28:40
推荐回答(2个)
回答(1):

一、前言:玩Oracle的人一般都是对电脑很内行的朋友,如果不是,操作中会碰到很多困难。服务器上安装Oracle 10G或其后版本的Oracle。服务器上安装JAVA运行环境。在本地服务器上先进行实验,用最权高登录操作系统权,用最高登录数据库的权。

二、具体方法:10G及其以后版本的Oracle数据库提供了对Java程序的更多的支持,可用调用JAVA的方法调用操作系统命令。

1. 首先我们创建调用操作系统命令的Java方法
create or replace and compile java source named oscmd as
import java.io.*;
import java.lang.*;
public class OSCmd extends Object {
    public static int OSCmd(String args) {
        Runtime rt = Runtime.getRuntime();
        int rc = -1;
        try {
            Process p = rt.exec(args);
            int bufSize = 4096;
            BufferedInputStream bis = new BufferedInputStream(p.getInputStream(), bufSize);
        int len;
        byte buffer[] = new byte[bufSize];
        while ((len = bis.read(buffer, 0, bufSize)) != -1)
                System.out.write(buffer, 0, len);
            rc = p.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
            rc = -1;
        } finally {
            return rc;
        }
    }
}
2. 然后,再创建一个PL/SQL函数调用Java方法
CREATE
 OR REPLACE FUNCTION Run_Cmd(p_Cmd IN VARCHAR2) RETURN NUMBER AS 
LANGUAGE JAVA NAME 'OSCmd.OSCmd(java.lang.String) return integer';
3. 之后我们就可以轻松的在Oracle程序中调用操作系统命令了
declare
    n number;
begin
    n := Run_Cmd('Copy C:\temp.txt D:\temp.txt');
end;

三、补充说明:在Oracle的SQLPLUS下可以使用Host命令来执行操作系统级别的命令或者可执行文件,PL SQL作为第三方远程联接工具,是不能直接执行这种指令的。

回答(2):

Linux:命令前面加上!或host
Windows:命令前面加上$或host