触发器如何执行exec('select .. from inserted') 什么意思?直接select ... from inserted不就行了吗?还需要动态? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg: declare @fname varchar(20) set @fname = 'FiledName' Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可 declare @fname varchar(20) set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句正确 3. 输出参数 declare @num int, @sqls nvarchar(4000) set @sqls='select count(*) from tableName' exec(@sqls) --如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) set @sqls='select @a=count(*) from tableName ' exec sp_executesql @sqls,N'@a int output',@num output select @num 字段多,可以在EXCEL利用连接公式生成.只要有表的数据字典.. 谢谢wufeng4552提供的信息,但如果用触发器中的inserted 就出现问题了 那就使用#table吧。SELECT * INTO #tmp FROM insertedEXEC('SELECT ... from #tmp')DROP TABLE #tmp 谢谢各位的帮助,问题解决了,通过使用trigger的instead of insert经SELECT * INTO #tmp FROM inserted来解决。结贴了!! 到主机 的 TCP/IP 连接失败 想在原有的表里插入ID列,如何让列的值从1开始自动生成 【紧急求助】链接服务器,总是提示 sql不存在 执行存储过程出现诡异问题!请教问题原因! 请推荐SQL备份软件 怎样自动创建表的名称末尾为数字且数字自增的表名? sqlserver怎么取行记录的最大值 菜鸟遇到的超难问题,哪位高手出手想救啊~! 给tempdb库加入一个用户,一切可运行,为何机器重启后,temp库中这个用户自动不见了? 算法 高分求一个SQL 求一条sql语句,查询2个表,根据其中一个表的数据行数进行排序的问题
1 :普通SQL语句可以用Exec执行 eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名 declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确 3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中? declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
来解决。结贴了!!