雪花jdbc参数为所有数据类型返回VARCHAR

时间:2019-11-07 11:46:27

标签: snowflake-data-warehouse

Snowflake JDBC驱动程序将所有数据类型的参数元数据报告为VARCHAR。有什么办法可以解决这个问题?

DDL:- 创建表INTTABLE(INTCOL整数)

下面是Snowflake ODBC驱动程序的输出

SQLPrepare:
In:StatementHandle = 0x00000000021B1B50, StatementText = "INSERT INTO INTTABLE(INTCOL) VALUES(?)", TextLength = 42
Return: SQL_SUCCESS=0

SQLDescribeParam:
In:StatementHandle = 0x00000000021B1B50, ParameterNumber = 1, DataTypePtr = 0x00000000001294D0, ParameterSizePtr = 0x0000000000126950,DecimalDigits =0x0000000000126980, NullablePtr = 0x00000000001269B0
Return: SQL_SUCCESS=0
Out:*DataTypePtr = SQL_VARCHAR=12, *ParameterSizePtr = 16777216, *DecimalDigits = 0, *NullablePtr = SQL_NULLABLE=1

下面是Snowflake JDBC驱动程序的输出。

PreparedStatement ps = c.prepareStatement("INSERT INTO INTTABLE(INTCOL) VALUES(?)");

ParameterMetaData psmd = ps.getParameterMetaData();

for(int i=1 ;i<=psmd.getParameterCount(); i++) {
    System.out.println(psmd.getParameterType(i)+ "  " + psmd.getParameterTypeName(i));
}

输出:- 12个文字

1 个答案:

答案 0 :(得分:0)

感谢您向线程添加更多信息。我可能仍然会做一些猜测。

如果尝试从Varchar更改表值类型,并且其中没有值,则可以删除表,然后重新创建它。

如果您想更改表中已有的内容,请先尝试更改表:Manual Reference

还有一个CREATE OR REPLACE TABLE(col,col 2)可以同时处理这两个问题。

这是您要找的东西吗?