雪花ODBC和变量数据类型
使用适用于Windows的odbctest和Snowflake 64位ODBC驱动程序: 使用此DDL在snowflake中创建了一个表:雪花ODBC和变量数据类型,odbc,snowflake-cloud-data-platform,variant,Odbc,Snowflake Cloud Data Platform,Variant,使用适用于Windows的odbctest和Snowflake 64位ODBC驱动程序: 使用此DDL在snowflake中创建了一个表: CREATE TABLE "SFDEST"."QAUSER"."BT14726" ("VARCHAR_10_COL" VARCHAR (10), "VARCHAR_4000_COL" VARCHAR (4000) , "CHAR_10_COL" CHAR (10) , "CLOB_COL" VARIANT, "ROWID" CHAR (18) N
CREATE TABLE "SFDEST"."QAUSER"."BT14726"
("VARCHAR_10_COL" VARCHAR (10),
"VARCHAR_4000_COL" VARCHAR (4000) ,
"CHAR_10_COL" CHAR (10) ,
"CLOB_COL" VARIANT,
"ROWID" CHAR (18) NOT NULL )
然后尝试准备insert语句:
尝试使用SQL:
INSERT INTO "SFDEST"."QAUSER"."BT14726"
("VARCHAR_10_COL",
"VARCHAR_4000_COL",
"CHAR_10_COL",
"ROWID",
"CLOB_COL")
VALUES ( ?, ?, ?, ?, ?)
但返回了此错误:
准备目标insert语句失败。SQL编译错误:
表达式类型与列数据类型不匹配,应为变量,但
获取列clobu COL的VARCHAR1
这是odbc跟踪的相关部分:
sqdrsvc 3dfc-52bc输入SQLPrepare
HSTMT 0x000000435C961620
UCHAR*0x000000435D262720[140]插入到SFDEST.QAUSER.BT14726 VARCHAR\u 10\u COL中,
VARCHAR\u 4000\u列、CHAR\u 10\u列、ROWID、CLOB\u列值?,
?, ?, ?, ?
SDWORD 140
sqdrsvc 3dfc-52bc退出SQLPrepare,返回代码为
-1 SQL\u错误
HSTMT 0x000000435C961620
UCHAR*0x000000435D262720[140]插入到SFDEST.QAUSER.BT14726 VARCHAR\u 10\u COL中,
VARCHAR\u 4000\u列、CHAR\u 10\u列、ROWID、CLOB\u列值?,
?, ?, ?, ?
SDWORD 140
DIAG[22000]SQL编译错误:表达式类型与列数据类型不匹配,应为变量,但得到
COL 2023柱的VARCHAR1
如果您有一个格式化为有效JSON blob的字符串,则需要使用PARSE_JSON将其转换为实际的变量类型,以便SnowFlake能够识别它 可能是这样的:
INSERT INTO "SFDEST"."QAUSER"."BT14726"
("VARCHAR_10_COL",
"VARCHAR_4000_COL",
"CHAR_10_COL",
"ROWID",
"CLOB_COL")
VALUES ( ?, ?, ?, ?, PARSE_JSON(?))
本文描述了除了传递到INSERT语句中的实际绑定变量之外的所有内容。插入的CLOB_COL值是多少?如果是字符串形式的JSON,则需要先使用PARSE_JSON函数将其设置为JSON。谢谢您的建议。我们的开发人员说ODBC不需要在准备之前绑定变量。所以这仍然是一个悬而未决的问题。我认为问题归结为变量的值,这些变量正在被绑定。你能在上面的问题中加上这些例子吗。。。您是否仍会收到与此更改相同的错误?如果不同,您能否提供新的错误消息?