我正在使用Trafodion通过跨国sql查询在HBase中工作。我看到java文件(存储过程)正在使用" Call"这样就可以创建存储过程c#"喜欢"存储过程java"用于呼叫操作。 请原谅我在我的问题上的任何错误我在程序员领域是自由的
答案 0 :(得分:1)
是的,Trafodion使用Java存储过程。 Trafodion社区正在编写一本描述如何操作的手册,因此目前没有一套简单易用的说明。下面是一个简单的示例,它将三个SQL字符串作为参数,并为它们创建三个结果集。
首先,编写一个这样的Java程序:
import java.sql.*;
class TEST101
{
public static ResultSet makeRS(String s, int i) throws Throwable
{
Connection conn = DriverManager.getConnection("jdbc:default:connection");
PreparedStatement ps = conn.prepareStatement(s);
return ps.executeQuery();
}
public static void rs3(String s1, String s2, String s3, String[] status,
ResultSet[] rs1, ResultSet[] rs2, ResultSet[] rs3)
throws Throwable
{
status[0] = "OK";
rs1[0] = makeRS(s1, 1);
rs2[0] = makeRS(s2, 2);
rs3[0] = makeRS(s3, 3);
}
};
其次,编译它(使用Java 7)并为它创建一个jar文件。确保你的CLASSPATH中有... / core / sqf / export / lib / trafodion-sql - * .jar文件:
javac TEST101.java
jar cvf TEST101.jar *.class
第三,从Trafodion中的jar文件创建一个库,然后创建实际的存储过程:
create library TEST101 file '/your directory/TEST101.jar';
create procedure rs3(in query1 char(1000),
in query2 char(1000),
in query3 char(1000),
out status char(70))
language java parameter style java reads sql data dynamic result sets 3
external name 'TEST101.rs3' library TEST101;
最后,调用存储过程
create table test101_t1(a int no heading, b int, c char(10));
insert into test101_t1 values (1, 100, 'first'), (2, 200, 'second');
call rs3('select * from test101_t1',
'values (''second'', ''rowset'')',
'values (current_user)',
?);
希望有所帮助。对不起,Trafodion社区的任何人都没有看过这个。顺便说一句,您也可以发送电子邮件至user@trafodion.incubator.apache.org。