是否可以创建"存储过程c#"喜欢"存储过程java"在trafodion

时间:2015-12-29 05:53:23

标签: c# stored-procedures

我正在使用Trafodion通过跨国sql查询在HBase中工作。我看到java文件(存储过程)正在使用" Call"这样就可以创建存储过程c#"喜欢"存储过程java"用于呼叫操作。                                                           请原谅我在我的问题上的任何错误我在程序员领域是自由的

1 个答案:

答案 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。