call path/spl( … )

阅读(3266) 标签: jdbc, 寻找程序文件,

描述:

通过集算器jdbc执行脚本文件。

语法:

call path/spl(…)

备注:

通过集算器jdbc执行spl脚本文件。

pathspl脚本文件路径,查找spl文件时,优先寻找本地路径,找不到则在服务器上找(服务器列表在raqsoftConfig.xml文件中配置)。

类似常规数据库驱动中调用存储过程的方式,执行时,用con.prepareCall()调用语句,参数可以直接写在语句中,也可以通过st.setObject()设定。Statement生成后,用st.execute()执行该语句,执行成功后,将结果集返回成序列。

call path/spl(…)语法中的“(…)”可省略,缺省按脚本本身的参数顺序依次传入。

参数:

path

文件的相对寻址路径或绝对路径,省略表示相对寻址路径。

spl

.splx/.spl/.dfx格式的脚本文件,扩展名以.splx/.spl/.dfx为序找。

spl中传递的参数值,将按顺序传入脚本文件spl的各参数中,与spl中的参数名无关,多参数时用逗号隔开。

示例:

test.splx网格文件内容如下,StuIdClass为网格参数:

 

A

1

=connect("demo")

2

=A1.query("select * from SCORES where STUDENTID=? and CLASS=?",StuId,Class)

3

=A2.sum(SCORE)

4

>A1.close()

5

return A3

测试代码如下:

public void testDataServer() {

Connection con = null;

java.sql.PreparedStatement st;

try{

Class.forName("com.esproc.jdbc.InternalDriver");

con= DriverManager.getConnection("jdbc:esproc:local://");

//调用存储过程,其中test.splx/.spl/.dfx的文件名

st =con.prepareCall("call test(?,?)");

//设置第一个参数

st.setObject(1,"4");

//设置第二个参数

st.setObject(2,"Class one");

//执行存储过程

st.execute();

//获取结果集

ResultSet set = st.getResultSet();

//打印结果

printRs(set); 

//下面的语句和上面的调用方法效果相同

st =con.prepareCall("call test(4,\"Class one\")");

st.execute();

set = st.getResultSet();

printRs(set);

}

catch(Exception e){

System.out.println(e);

}

finally{

//关闭连接

if (con!=null) {

try {

con.close();

}

catch(Exception e) {

System.out.println(e);

}

}

}

}