描述:
通过集算器jdbc执行脚本文件。
语法:
call path/spl(…)
备注:
通过集算器jdbc执行spl脚本文件。
path为spl脚本文件路径,查找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网格文件内容如下,StuId和Class为网格参数:
|
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);
}
}
}
}