请问能不能用PL/SQL写一个存储过程来调用本机的一个可执行程序!
解决方案 »
- oracle怎样改变表结构
- Win7 x64 VS2010调Oracle数据库报错ORA-06413
- VIO_ADMIN.SYS_LOB0000027183C00004$$无法通过5314958(在表空间VIO_PIC中)扩展ORA-06512: 在"SYS.DBMS_LOB", line 700
- 请教:关于PL/SQL中对表字段的描述一栏不识别中文的问题
- Oracle 如何将一个数据库内所有表结构导出到,并导入到另一个数据库中
- 请教几个简单的存储过程
- 怎样学好Oracle数据库?该学习的东西很多,但是应该学习写什么为好
- DX请帮忙,由于买书不便,谁有“<<Oracle 9i 中文版数据库系统管理>>赵松涛著 人民邮电出版社” 电子版或网址
- 在oracle中有没有象access中"自动编号"类型的数据类型
- 各位大哥,大侠现在小弟遇到一个问题请各位指教!!!!关于ORACLE数据删除的恢复!!
- 请问,如何用PL/SQL在两台机器上进行文件的复制?
- 如何做數據備份,大家來一起來討論,研究OMS
FUNCTION TESTHOST
RETURN varchar2 IS
error varchar2(100);
BEGIN
host('E:\FlashGet\flashget.exe');
RETURN error ;
EXCEPTION
WHEN others THEN
return 'error' ;
END;
PLS-00201: 必须说明标识符 'HOST'
我考的书上的 好象有点错误 自己改改吧
CREATE OR REPLACE AND COMPILE
JAVA SOURCE NAMED "Util"
AS
import java.io.*;
import java.lang.*;public class Util extends Object
{ public static int RunThis(String[] args)
{
Runtime rt = Runtime.getRuntime();
int rc = -1; try
{
Process p = rt.exec(args[0]); int bufSize = 4096;
BufferedInputStream bis =
new BufferedInputStream(p.getInputStream(), bufSize);
int len;
byte buffer[] = new byte[bufSize]; // Echo back what the program spit out
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;
}
}
}
/ BEGIN
DBMS_JAVA.GRANT_PERMISSION
( USER,
'java.io.FilePermission',
-- '/usr/bin/ps', -- for UNIX
'C:\WINNT\system32\cmd.EXE', -- for WINDOWS
'execute'); DBMS_JAVA.GRANT_PERMISSION (
USER,
'java.lang.RuntimePermission',
'*',
'writeFileDescriptor' );
END;
/CREATE OR REPLACE FUNCTION RUN_CMD (
P_CMD IN VARCHAR2)
RETURN NUMBER
AS
LANGUAGE JAVA
NAME 'Util.RunThis(java.lang.String[]) return integer';
/CREATE OR REPLACE PROCEDURE RC (
P_CMD IN VARCHAR2)
AS
X NUMBER;
BEGIN
X := RUN_CMD (P_CMD); IF (X <> 0)
THEN
RAISE PROGRAM_ERROR;
END IF;
END;
/SET serveroutput on size 1000000
EXEC dbms_java.set_output(1000000)EXEC rc('C:\WINNT\system32\cmd.exe /c dir')
CREATE OR REPLACE AND COMPILE
JAVA SOURCE NAMED "Util"
AS
import java.io.*;
import java.lang.*;public class Util extends Object
{ public static int RunThis(String[] args)
{
Runtime rt = Runtime.getRuntime();
int rc = -1; try
{
Process p = rt.exec(args[0]); int bufSize = 4096;
BufferedInputStream bis =
new BufferedInputStream(p.getInputStream(), bufSize);
int len;
byte buffer[] = new byte[bufSize]; // Echo back what the program spit out
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;
}
}
}
/ BEGIN
DBMS_JAVA.GRANT_PERMISSION
( USER,
'java.io.FilePermission',
-- '/usr/bin/ps', -- for UNIX
'C:\WINNT\system32\cmd.EXE', -- for WINDOWS
'execute'); DBMS_JAVA.GRANT_PERMISSION (
USER,
'java.lang.RuntimePermission',
'*',
'writeFileDescriptor' );
END;
/CREATE OR REPLACE FUNCTION RUN_CMD (
P_CMD IN VARCHAR2)
RETURN NUMBER
AS
LANGUAGE JAVA
NAME 'Util.RunThis(java.lang.String[]) return integer';
/CREATE OR REPLACE PROCEDURE RC (
P_CMD IN VARCHAR2)
AS
X NUMBER;
BEGIN
X := RUN_CMD (P_CMD); IF (X <> 0)
THEN
RAISE PROGRAM_ERROR;
END IF;
END;
/SET serveroutput on size 1000000
EXEC dbms_java.set_output(1000000)EXEC rc('C:\WINNT\system32\cmd.exe /c dir')