MS sqlserver中的变量 表变量问题--解决办法

xiaoxiao2021-03-01  26

//解决办法 临时表

表变量与其他变量相同,只在其作用域中有效, exec ()执行的sql已是另一个会话了,变量无法传递的可以用临时表解决 create proc test as declare @strSQL varchar ( 300 ) create table #tblTmp( [ ID ] int , [ name ] varchar ( 20 )) set @strSQL = " insert into #tblTmp select ID,name from tbl" exec ( @strSQL ) GO

//第二中解决办法

问题描述:在存储过程中我定义了两个参数, @Filed代表一个列 , @TableName代表表名 ,一个变量 @SQLStr代表SQL语句 ,以下语句: SELECT @SQLStr = SELECT TOP 1 @Field FROM @TableName EXEC ( @SQLStr )这两句都û问题,但是如何把查询出来的结果赋值到一个变量中(如变量 @tmpStr )?直接用如下语句则语法检查时会报错,说须先定义变量 @TableName ,但是我已经定义了啊: SELECT TOP 1 @tmpStr = @Field FROM @TableName 解决方案: declare @sql nvarchar ( 4000 ) set @sql = N ' SELECTTOP1@tmpStr= ' + @Field + ' FROM ' + @TableName exec sp_executesql @sql ,N ' @tmpStr类型out ' , @tmpStr out

//第三种解决办法

可以这样:delcare@sqlstrvarchar( 8000 )declare@i int while (@i > 0 )begin set @sqlstr = ' CREATETABLETABLE_ ' + cast(@I as varchar) + ' (...) ' exec(@sqlstr) set @i = @i - 1 end

转载请注明原文地址: https://www.6miu.com/read-3200277.html

最新回复(0)