我有一个查询,该查询从另一台服务器(具有IP LINK)中选择某个表,可以选择表。但是,当我将FUNCTION(存储过程)放入CASE WHEN条件中时,它不起作用。
SELECT
CASE
WHEN A.TGL IS NULL THEN
B.TGL
ELSE
[123.123.111].[DBNAME].dbo.Func_S(A.NOREK, B.NAMA, A.TGL)
END AS TGL_ANSURAN
FROM
[123.123.111].[DBNAME].dbo.TblName AS A
JOIN [123.123.111].[DBNAME].dbo.TblName2 B ON A.ID = B.ID
执行该操作时,错误消息显示:
” [Err] 42000-[SQL Server]远程函数引用'[123.123.111]。[DBNAME] .dbo.Func_S'不允许,并且该列 找不到名称“ 123.123.111”或该名称不明确。”
我的查询出了什么问题? Func_S
存在,并且我的服务器已经与网络服务器链接。
答案 0 :(得分:0)
您应该使用openquery来选择函数-因此请尝试一下是否可行。
select
a.*
from
OPENQUERY ( [123.123.111],
'
SELECT
CASE
WHEN A.TGL IS NULL THEN
B.TGL
ELSE
[DBNAME].dbo.Func_S(A.NOREK, B.NAMA, A.TGL)
END AS TGL_ANSURAN
FROM
[DBNAME].dbo.TblName AS A
JOIN [DBNAME].dbo.TblName2 B ON A.ID = B.ID
' ) a