代码之家  ›  专栏  ›  技术社区  ›  Levi W

使用用户定义的表类型变量参数执行远程过程

  •  4
  • Levi W  · 技术社区  · 12 年前

    我正在尝试通过链接服务器调用远程存储过程。问题是,其中一个必需的参数是用户定义的表类型。

    我似乎不知道如何从远程服务器将本地变量声明为用户定义的表类型。

    这是我目前正在尝试的,但没有奏效:

    DECLARE @tblVar [REMOTESERVER].REMOTEDB.dbo.user_defined_table_type
    
    EXEC [REMOTESERVER].REMOTEDB.dbo.procedure_name (@param1 = @tblVar)
    

    然而,我得到的错误是:

    类型名称“REMOTESERVER.REMOTEDB.dbo”包含的前缀数超过了最大值。最大值为1。

    必须声明标量变量“@tblVar”

    1 回复  |  直到 5 年前
        1
  •  10
  •   Levi W    12 年前

    经过进一步的研究,我发现表变量对于远程过程调用是无效的。

    相反,我所做的被称为 EXEC [REMOTESERVER].[REMOTEDB]..sp_executesql 并声明和填充了我的表变量,并调用了其中的存储过程。

    示例:

    DECLARE @SQL nvarchar(4000)
    SET @SQL = N'
    DECLARE @tblVar dbo.user_defined_table_type
    -- Code to populate table here
    EXEC dbo.procedure_name (@param1 = @tblVar)
    '
    EXEC [REMOTESERVER].[REMOTEDB]..sp_executesql @stmt = @SQL
    

    这解决了我的问题。希望这能在未来帮助其他人。