我正在尝试在链接服务器上调用标量函数,但是在设置它时遇到了一些麻烦。我希望将其设置为服务器上的功能。 以下是我想出的最好的方法。
我正在尝试在服务器上的函数中包装一个openquery语句。但是,查询本身无法正常工作,我无法返回结果而不会导致错误。
USE POWERVIEW
GO
ALTER FUNCTION DBO.FN_VAR_DUMPNAME (@DUMPLOC NVARCHAR(40))
RETURNS NVARCHAR(40)
AS
BEGIN
--DECLARE @DUMPLOC NVARCHAR(40)='D11'
DECLARE @sql nvarchar(800)
DECLARE @param Nvarchar(20)= @DUMPLOC
DECLARE @retval NVARCHAR(40)
DECLARE @ParmDefinition nvarchar(500)=N'@retvalOUT NVARCHAR(40) OUTPUT'
DECLARE @innersql nvarchar(400)
SET @innersql = 'SELECT POWERVIEW.DBO.FN_VAR_DUMPNAME('''+''''+@param +''''+''')'
SET @sql = 'select * from openquery(MINESQLSERVER,'''+ @innersql +''' )'
***RETURN EXEC sp_executesql @sql --This line does not work***
END
答案 0 :(得分:0)
这个评论太长了。
SQL Server不允许函数调用动态SQL。因此,您无法做自己想做的事。
您还有其他问题:
return exec
并不是我以前见过的东西。exec
返回一个整数。您将需要使用其他方法来解决问题-想到一个存储过程。