declare @ScosAdd varchar(100),
@SQLScos varchar(1000)
declare @tbScosAdd table( Scos varchar(20))
select @ScosAdd='1&2&3&4&5'
set @SQLScos='insert @tbScosAdd(scos) select '''+replace(@ScosAdd,'&',''' union select ''')+''''
exec (@SQLScos)错误信息:
服务器: 消息 137,级别 15,状态 2,行 1
必须声明变量 '@tbScosAdd'。
@SQLScos varchar(1000)
declare @tbScosAdd table( Scos varchar(20))
select @ScosAdd='1&2&3&4&5'
set @SQLScos='insert @tbScosAdd(scos) select '''+replace(@ScosAdd,'&',''' union select ''')+''''
exec (@SQLScos)错误信息:
服务器: 消息 137,级别 15,状态 2,行 1
必须声明变量 '@tbScosAdd'。
--exec和上面的sql作用域不一樣
declare @ScosAdd varchar(100),
@SQLScos varchar(1000)
declare @tbScosAdd table( Scos varchar(20))
select @ScosAdd='1&2&3&4&5'
set @SQLScos=' select '''+replace(@ScosAdd,'&',''' union select ''')+''''
insert @tbScosAdd(scos) exec (@SQLScos)
服务器: 消息 197,级别 15,状态 1,行 7
无法在向表插入变量时将 EXECUTE 用作源。
@SQLScos varchar(1000)
declare @tbScosAdd table( Scos varchar(20))
select @ScosAdd='1&2&3&4&5'
set @SQLScos=' select '''+replace(@ScosAdd,'&',''' union select ''')+''''
insert @tbScosAdd(scos) exec (@SQLScos) select * from @tbScosAdd/*
(5 個資料列受到影響)
Scos
--------------------
1
2
3
4
5(5 個資料列受到影響)
*/
AS
declare @tbtmp TABLE
( [name] [varchar] (10) NOT NULL ,
[date] [datetime]
)
insert into @tbtmp (name,date) SELECT table1.name,table1.date FROM table1
select * from @tbtmp
GO
参考