繁体   English   中英

将动态Openquery分配给SQL Server中的变量

[英]Assign dynamic Openquery to a variable in SQL Server

我具有以下动态查询的存储过程

ALTER PROCEDURE [dbo].[Del_AE_Update] 
      @uid nvarchar(MAX)
AS
BEGIN
    Declare @AEname varchar(MAX);
    Declare @sqlquery varchar(MAX);

    Set @sqlquery = ('Select name FROM OPENQUERY(CRM_MYSQL,''Select name From tscrm_prod.user_info where uid='+@uid+''')')  

    Select @sqlquery
END

但是,我正在获得价值的名称。 我希望将其分配给@sqlquery因为我需要在该过程的下一部分中使用它。

这就是我的结果。

name= Dallas-BDD

@sqlquery = 'Select name FROM OPENQUERY...

您必须执行查询字符串(@sqlquery)才能获取查询的值。 为了能够将动态查询的结果转换为变量,您需要使用具有一个输入和一个输出参数的sp_executesql。

网上有很多例子。

它看起来像这样:(这是一个简化的版本,可以让您有所了解)

DECLARE @ParmDefinition nvarchar(500);
Declare @sqlquery nvarchar(4000);
Declare @name varchar(100);

Set @sqlquery =('Select @name= UserName From tmp_users where userid=@uid') 

    SET @ParmDefinition = N'@uid varchar(max),
        @name nvarchar(25) OUTPUT';
    EXECUTE sp_executesql
        @sqlquery
        ,@ParmDefinition
        ,@uid = 1
        ,@name = @name OUTPUT;
Select @name -- which you will be able to use to continue in your SP

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM