gpt4 book ai didi

sql-server-2008 - SQL Server 2008 R2 -> Postgres 链接服务器 "cannot get the current row value of column..."

转载 作者:行者123 更新时间:2023-11-29 14:00:48 25 4
gpt4 key购买 nike

我已经成功地在 SQL Server 2008 R2 和 Postgres 数据库之间创建了一个链接服务器,并且一切正常,除非我尝试运行一个返回文本列的存储过程。

调用的存储过程(postgres 中的函数)的最上面几行是:

CREATE OR REPLACE FUNCTION get_defects()
RETURNS TABLE(defectid bigint, featurevalues text) AS ...

该函数显然在 postgres 中正确执行,但是当我尝试通过链接服务器在 SQL Server 中执行该函数时:

SELECT *
FROM OPENQUERY(POSTGRES, 'SELECT * FROM get_defects()')

我得到错误:

OLE DB provider "MSDASQL" for linked server "POSTGRES" returned message "Requested conversion is not supported.".

Msg 7341, Level 16, State 2, Line 1
Cannot get the current row value of column "[MSDASQL].featurevalues" from OLE DB provider "MSDASQL" for linked server "POSTGRES".

问题似乎出在尝试返回 TEXT 列 featurevalues 时,因为以下查询按预期执行:

SELECT defectid
FROM OPENQUERY(POSTGRES, 'SELECT * FROM get_defects()')

任何帮助将不胜感激..

最佳答案

我同意 Pavel 的建议:

 SELECT defectid bigint, featurevalues::varchar(4000) from get_defects();

虽然 SQL 主要是一种严格类型的语言,但我认为值得讨论,因此您需要考虑 PostgreSQL 对此类类型的处理并不一定是 SQL Server 所期望的。如果 SQL Server 无法处理它,您将收到类似这样的错误。

关于sql-server-2008 - SQL Server 2008 R2 -> Postgres 链接服务器 "cannot get the current row value of column...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com