我使用snowflake-jdbc-3.13.8.jar和jdk1.8.0_151来实现snowflake存储过程,它有一个OUT参数。我得到了
net.snowflake.client.jdbc SnowflakeLoggedFeatureNotSupportedException在调用registerOutParameter的行上。
“”“
CallableStatement st = connection.prepareCall("call sp_poc(?)"); //Call proc
st.registerOutParameter(1,java.sql.Types.VARCHAR); //exception here
ResultSet rs= st.executeQuery(); //execute st“”“
下面是在snowflake数据库上创建的过程
CREATE or Replace PROCEDURE sp_poc()
RETURNS VARCHAR
LANGUAGE javaScript
AS
$$
var rs="test";
return rs;
$$;发布于 2021-10-23 15:48:10
不能直接使用Snowflake存储过程的输出。如果你想得到它的返回输出,你需要运行另一个查询。无论它是从web UI运行,还是通过驱动程序或连接器运行,都是如此:
call sp_poc();
select * from table(result_scan(last_query_id()));如果不想依赖last_query_id()函数,可以在JDBC调用中捕获查询ID。你可以在这里引用Snowflake JDBC驱动的getQueryId()方法:
https://docs.snowflake.com/en/user-guide/jdbc-api.html#interface-snowflakecallablestatement
如果以这种方式捕获查询ID,则可以使用以下命令获取SP完成后长达24小时的输出结果:
select * from table(result_scan(?));其中绑定变量是从getQueryId() JDBC方法返回的查询ID。
https://stackoverflow.com/questions/69685549
复制相似问题