【SQL Server】将EXEC的变量结果赋值输出

动态传入表名和表的某些属性,然后将标的属性赋值到参数中,以便后续使用。

首先一张表(表和字段设计略),使用动态的语句如下:

1 DECLARE @tablename VARCHAR(255) = 'BomNo'
2     ,@id INT = 1
3     ,@sql NVARCHAR(MAX) ;
4 SET @sql ='SELECT fnumber,sonFnumber FROM BomNo WHERE id = ' + CONVERT(varchar,@id)
5 EXEC(@sql)

执行T-SQL 语句,结果如下:

 如果,我们希望把输出的 fnumber 和 sonFnumber 作为参数,应该怎么做?这时候就涉及到了系统函数sp_executesql

DECLARE @tablename VARCHAR(255) = 'BomNo'
    ,@id INT = 1
    ,@sql NVARCHAR(MAX)     -- 如果定义执行语句类型为VARCHAR,会报错:过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'
    ,@nparam NVARCHAR(1000) = N' @fnumber VARCHAR(255) OUTPUT,@sonfnumber VARCHAR(255) OUTPUT';

DECLARE @fnumber VARCHAR(255),@sonfnumber VARCHAR(255)
SET @sql ='SELECT @fnumber= fnumber,@sonFnumber=sonFnumber FROM BomNo WHERE id = ' + CONVERT(varchar,@id)

EXEC sys.sp_executesql @sql, @nparam, @fnumber OUTPUT, @sonfnumber OUTPUT
-- 传递到参数的值
SELECT @fnumber  fnumber, @sonfnumber sonfnumber

可以发现,参数已经赋值。

posted @ 2024-09-06 08:33  陆陆无为而治者  阅读(224)  评论(0)    收藏  举报