exec xp_cmdshell 'dir c:\'
注信培意不能调用需要用户干预才能继续运行的程序.
使用Sqlserver的xp_CmdShell扩展存储过程嫌掘的一个注意:
这个存储过程只能执行Dos控制台程序,其他的Exe程序不能在Sqlserver进程空间执行.
但外部程芹坦核式必须是一个自生灭的程式(即没有消息循环、不需要与用户交互),否则将会进入死循环中。
找到了这么一段,应该是说,java存储过程,不是在sqlplus中直接编译,而是编译好Java程序,然后加载到oracle数据库中,进行调用):使用Java存储过程进行位运算
Oracle有理由不直接提供位 *** 作支持。由于Oracle提供了极为方便的Java存储过程,我们可以很方便的用来实现所有位 *** 作。
下面我们准备实现四种基本的位 *** 作。关于Java存储过程的内容,本文不给予太多描述,只引用必要的部分用于阐述问题。
首先,我们需要一个Java类,里面实现了位运算的四种基本功能。
public class BitOper {
public static int bitAnd(int a, int b) {
return a &b
}
public static int bitOr(int a, int b) {
return a | b
}
public static int bitXor(int a, int b) {
return a ^ b
}
public static int bitNot(int a) {
return ~a
}
}
为了便于描述问题,我将这个类设计的相当简单。
将其编译后得到BitOper.class。
接下来,使用Oracle提供的一个工具loadjava将上述类加载到数据库中。该工首银具在安装Oracle时已经自动安装。
loadjava –user user_name/password@sid BitOper.class
该命令执行完后,如果没有报错则表示加载成功。
最后一步工作是创建PL/SQL包装函数。这里有两种选择,一种是创建独立的函数,一种是创建用包封装的函数。为了减少篇幅,我选择使用第一种。
create or replace function bit_and
(
int1number,
int2number
) return number
DETERMINISTIC
AS LANGUAGE JAVA
NAME 'BitOper.bitAnd(int, int) return int'
/
create or replace function bit_or
(
int1number,
int2number
) return number
DETERMINISTIC
AS LANGUAGE JAVA
NAME 'BitOper.bitOr(int, int) return int'
/
create or replace function bit_xor
(
int1number,
int2number
) return number
DETERMINISTIC
AS LANGUAGE JAVA
NAME 'BitOper.bitXor(int, int) return int'
/
create or replace function bit_not
(
int1number
) return number
DETERMINISTIC
AS LANGUAGE JAVA
NAME 'BitOper.bitNot(int) return int'
/
将上述代码在SQLPLUS中执行后,当前用户就具备了四种基本位 *** 作的功能。
不妨使用几个例子来测试一者简宴下:
select bit_and(9,8) "9and8",
bit_or(3,4) "3or4",
bit_xor(3,5) "3xor5",
bit_not(3) "not3"
from dual
其结果为:
9and8 3or4 3xor5 not3
---------- ---------- ---------- ----------
8 7 6 -4
看起来一切都很简单,你是否这么认咐橡为呢?
SQL数据库本来就是可以兼容JAVA的,不过在java程序中调用数据时,要进行链接数据库的一些 *** 作,并且,需要在你的项目中导入连接数据库的Jar包,才可以,不然会提示错误!首先。。。你是一个程序员,你可以把自己看成你编写项基闹目型锋谈的神,你就是这个项目的主宰,一些的算法,一些的应用,都可以按照你的方法去卜碰完成!然后,就是代码的一些重复利用性要高。。。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)