• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

在触发器中加入表变量如何操作(sql server2000)

hanzhaorui 2008-04-09 10:03:09
DECLARE @TB nvarchar(50)
Declare @SQ nvarchar(50)
declare @aa as varchar(50)
SET @TB='table1'
SET @SQ='select '+@aa+'= num from '+@TB +' where id=1'
exec(@SQ)
insert into Table4(col,tt) VALUES(@aa,@SQ)
我想把表名table1放到一 变量@TB中,结果执行输入的全是空值,请问如何操作这种触发器.
...全文
76 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zl_c 2008-04-11
2楼正解
回复
sp4 2008-04-11
换成3楼的写法

用sp_executesql
回复
cxmcxm 2008-04-09
或者直接造出
insert into Table4
的动态语句来
回复
cxmcxm 2008-04-09
动态语句中的值是不能赋给@aa的
可用以下方法实现
建一临时表
用insert into 临时表 exec(动态语句)
将动态语句的结果插入到临时表中
再select临时表
回复
wzy_love_sly 2008-04-09
2
回复
wzy_love_sly 2008-04-09
create table tb(id int,num varchar(20))
insert into tb select 1,2
insert into tb select 2,3

DECLARE @TB nvarchar(50)
Declare @SQ nvarchar(50)
declare @num varchar(50)
SET @TB='tb'
SET @SQ='select @num=num from '+@TB +' where id=1'
exec sp_executesql @SQ,N'@num varchar(50) output',@num output
select @num


变量用动态sql
回复
fcuandy 2008-04-09
set @sq='select ' + @aa + '=num from ' + @tb + ' where id=1'

@aa未赋值,为null
因此 @sq得到null

exec(@sq) 即 exec一个null字串,未进行任何操作.
@aa,@sq均为null

insert tb4(col,tt) select @aa,@sq

所以插入的是null

不知道你想实现什么,还是说出来,想想给你怎么改.
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-09 10:03
社区公告
暂无公告