运行此查询时
CREATE TABLE t
(
tt Geography
)
INSERT INTO t(tt)
SELECT *
FROM OPENQUERY([Server2],'SELECT NULL')
它引发错误
消息206,级别16,状态2,第14行操作数类型冲突:int is 与地理不符
但是当我运行它时,它运行良好:
INSERT INTO t(tt)
SELECT NULL
我需要使用OPENQUERY
,如何解决以上问题?理想情况下,我需要在OPENQUERY
答案 0 :(得分:3)
该错误实际上是在告诉您问题所在,NULL
的值类型为int
。这是因为尚未为列定义类型,因此默认值为int
,并且该数据类型是从OPENQUERY
返回的。您可以通过运行以下内容查看此信息:
SELECT system_type_name
FROM sys.dm_exec_describe_first_result_set(N'SELECT NULL;',NULL,0);
返回的通知值为int
。您需要硬转换您的价值:
INSERT INTO t(tt)
SELECT *
FROM OPENQUERY([Server2],'SELECT CONVERT(geography,NULL)');