动态传入表名和表的某些属性,然后将标的属性赋值到参数中,以便后续使用。
首先一张表(表和字段设计略),使用动态的语句如下:
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
可以发现,参数已经赋值。
标签:fnumber,sonfnumber,VARCHAR,EXEC,sql,Server,SQL,id,255 From: https://www.cnblogs.com/luyj00436/p/18399528