加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 15:54:50 所属栏目:MsSql教程 来源:网络整理
导读://解决办法 临时表 ? 表变量与其他变量相同,只在其作用域中有效,??? ?? exec ()执行的sql已是另一个会话了,变量无法传递的??? ???? ??可以用临时表解决??? ???? ?? create ??? proc ???test??? ?? as ??? ?? declare ??? @strSQL ??? varchar ( 300 )???

//解决办法 临时表

?

表变量与其他变量相同,只在其作用域中有效,???

??
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 ' SELECT?TOP?1?@tmpStr= ' + @Field + ' ?FROM? ' + @TableName

exec ?sp_executesql? @sql ,N ' @tmpStr?类型?out ' , @tmpStr ?out

?

//第三种解决办法

?

可以这样:?

delcare?@sqlstr?varchar(
8000 )?

declare?@i?
int ?

while ?(@i > 0 )?

begin?

set ?@sqlstr? = ? ' CREATE?TABLE?TABLE_ ' + cast(@I? as ?varchar) + ' (...) ' ?

exec(@sqlstr)?

set ?@i = @i - 1 ?

end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读