首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雪花异常展开雪花对象

雪花异常展开雪花对象
EN

Stack Overflow用户
提问于 2022-01-03 17:55:37
回答 1查看 106关注 0票数 -1

我使用的是雪花-JDBC13.3.8.jar。在执行下面具有展开调用的代码时,我得到了异常。请指点我漏掉了什么?

代码语言:javascript
复制
    CallableStatement st = connection.prepareCall("CALL TEST_SP(?)");
    st.setString(1, "Value1");
    ResultSet resultSet = st.executeQuery();
    String queryId = resultSet.unwrap(SnowflakeResultSet.class).getQueryId();

    Net.snowflake.client.jdbc.SnowflakeCallableStatementV1 not unwrappable from net.snowflake.client.jdbc.SnowflakeStatement
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-04 10:34:21

您正在调用getQueryId()而不是getQueryID(),请注意ID在大写中。解包装工作,下面是一个示例。

首先,我创建一个简单的存储过程:

代码语言:javascript
复制
CREATE or replace PROCEDURE TEST_SP(v varchar)
  RETURNS VARCHAR
  LANGUAGE javascript
  AS
  $$
  return 'Done.';
  $$;

我测试它,看看它是否有效:

代码语言:javascript
复制
CALL TEST_SP('Value1');

它只会返回给我的字符串“完成”。

然后创建一个简单的Java类:

代码语言:javascript
复制
import java.io.PrintWriter;
import java.io.StringWriter;
import java.sql.*;
import net.snowflake.client.jdbc.*;

public class SampleUnwrap {
        public static void main(String[] args) {
                String user = "<user>";
                String password = "<pass>";
                String account = "<account>";
        String JDBC_DRIVER = "net.snowflake.client.jdbc.SnowflakeDriver";
                String warehouse = "<wh>";
        String role = "<role>";
        String db = "<db>";
        String schema = "PUBLIC";
                String queryString = "SSL=on&tracing=ALL&database=" + db + "&role=" + role +  "&warehouse=" + warehouse;
                String connectionURL = "jdbc:snowflake" + "://" + account + ".snowflakecomputing.com" + "/?" + queryString;
                Connection conn1;

                try {
                        conn1 = DriverManager.getConnection(connectionURL, user, password);
            CallableStatement stmt = conn1.prepareCall("CALL TEST_SP(?)");
            stmt.setString(1, "Value1");

            ResultSet resultSet = stmt.executeQuery();

            String queryId = resultSet.unwrap(SnowflakeResultSet.class).getQueryID();

            System.out.println(queryId);
            resultSet.close();
                        conn1.close();
                } catch (Exception e) {
                        StringWriter sw = new StringWriter();
                        e.printStackTrace(new PrintWriter(sw, true));
                        System.out.println(sw);
                }
        }

}

当我运行它时,我会得到queryID:

代码语言:javascript
复制
java -cp .:snowflake-jdbc-3.13.8.jar SampleUnwrap.java
01a166f7-0403-5054-0000-16490d51d2c2

如果环境仍然不适合你,就发布完整的类和详细信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70569662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档