Sybase中使用JAVA函数

在SYBASE12.5或者更久以前的版本都是不支持函数,但是有些时候我们又需要一些函数,而不仅仅是过程,这里有可以采用JAVA实现,并且写JAVA肯定比写存储过程要好多了,JAVA处理数据的能力或者是类型,会让SYBASE增不少光彩。以下是网上找到的一篇文章,详细介绍如何在SYBASE中使用JAVA,但我先说明一点,我现在用的是12.5.4这个版本,也提示开启JAVA功能成功,但是去不能够将JAR文件提交到数据库,也许这样与操作系统或者是数据库版本的问题。

-----------------------------------------------------

我用过12.5也是从Sybase网站下下载的(开发版,并发数有限制的),应该可以开发java存储函数的。
1 首先,要先允许数据库支持JAVA的特性。
sp_configure “enable java”,1
1> sp_configure "enable java",1

2> go

Parameter Name Default Memory Used Config Value

Run Value Unit Type

------------------------------ ----------- ----------- ------------

----------- -------------------- ----------

enable java 0 0 1

0 switch static

(1 row affected)

Configuration option changed. Since the option is static, Adaptive Server must

be rebooted in order for the change to take effect.

Changing the value of 'enable java' to '1' increases the amount of memory ASE

uses by 6482 K.

(return status = 0)

2 重新启动Sybase数据库。NT下面,可以通过控制面板->管理工具->服务来重启。

3 好了,下面,我们来简单地开发一个JAVA程序,然后看看sybase的T-SQL是如何调用的。

java程序

package sam;

public class HelloWorld

{

public String Hello()

{

return "HelloWorld";

}

}

4 编译并且打包上面这个java程序。

javac sam/*.java

jar cf0 sam.jar sam\*.class

5 安装java包到数据库中,用sybase提供的instjava程序,这个程序会随着sybase安装的时候,一起安装的。要说明的是,NT和unix命令名称不一样。unix下是installjava ,Windows NT下是instjava 。

instjava -f "E:\工作目录\Sybase\java\sam.jar" -new -j -S sam -U sa -P -D Northwind

6 在Sybase的Transaction-SQL中调用Hello方法

1> select (new sam.HelloWorld())>>Hello()

2> go

--------------------------------------------------

HelloWorld

我们可以看到,sybase基本采用了类似java语法,因此,java程序员应该很容易使用。

7 下面,我再谈谈第二个特性(java对象类型)的开发应用。

package sam;

public class Address implements java.io.Serializable

{

private String varCity;

private String varCountry;

private String varZip;

private String varHome;

public Address(String mCity,String mCountry,String mZip,String mHome)

{

varCity=mCity;

varCountry=mCountry;

varZip=mZip ;

varHome=mHome;

}

public String City()

{

return varCity;

}

public String Country()

{

return varCountry;

}

public String HomeAddress()

{

return varHome;

}

public String Zip()

{

return varZip;

}

public void ModifyAddress(String mCity,String mCountry,String mZip,String mHome)

{

varCity=mCity;

varCountry=mCountry;

varZip=mZip ;

varHome=mHome;

}

}

8 编译,打包,安装后。现在,我们就可以直接使用这个java对象类型。

建一个表,数据库字段类型是一个java类。

注意:可以作为数据库字段类型的java类,必须implements了java.io.serializable接口。

1> create table emps (

2> empno int,

3> name varchar(30),

4> addr sam.Address default new sam.Address

5> ('Not known', '','','')

6> )

7> go

1> alter table emps add constraint pk_emps primary key(empno)

2> go

操作并使用java类型的字段。

1> insert into emps(empno,name) values(1,'TOM')

2> go

(1 row affected)

1> insert into emps values(2,'BOB',

2> new sam.Address('Shanghai','china','200132','1169,nanjin road'))

3> go

(1 row affected)

1> begin

2> declare @A sam.Address

3> select @A=addr from emps where empno=2

4> select @A>>Country(),@A>>City(),@A>>HomeAddress(),@A>>Zip()

5> end

6> go

--------------------------------------------------

--------------------------------------------------

--------------------------------------------------

--------------------------------------------------

china

Shanghai

1169,nanjin road

200132

你可能感兴趣的:(java,sql,SQL Server,Sybase,Go)