怎样在函数内部执行exec sp rename

1325人阅读
动态sql语句基本语法
1 :普通SQL语句可以用Exec执行
eg:&& Select * fromtableName
&&&&&&&&Exec('select * from tableName')
&&&&&&&&Exec sp_executesql N'select * fromtableName'&&& --请注意字符串前一定要加N
2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname fromtableName&&&&&&&&&&&&&-- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' fromtableName')&&&&-- 请注意 加号前后的 单引号的边上加空格
当然将字符串改成变量的形式也可
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
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:102362次
积分:1424
积分:1424
排名:千里之外
原创:36篇
转载:43篇
(1)(1)(1)(1)(4)(1)(2)(1)(2)(1)(1)(6)(5)(1)(2)(2)(2)(1)(1)(2)(3)(3)(2)(1)(1)(3)(3)(2)(2)(3)(1)(2)(3)(4)(8)2514人阅读
数据库(25)
--参考:输出参数
DECLARE @num INT, @sqls NVARCHAR(4000)
SET @sqls='SELECT COUNT(1) 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
-- 如何将拼接的语句输出到表变量中去?
DECLARE @Ids VARCHAR(MAX) = ',,737,4224
DECLARE @Table TABLE (Id INT)
DECLARE @sql NVARCHAR(MAX) = ''
SET @sql='SELECT COL='''+ REPLACE(@Ids,',',''' UNION ALL SELECT ''')+''''
-- 将执行结果存入表变量中
INSERT INTO @Table
EXEC sp_Executesql @sql
--输出结果
SELECT * FROM @Table
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:769908次
积分:8540
积分:8540
排名:第2278名
原创:116篇
转载:210篇
评论:109条
本人家乡是宁德,现在福州工作. 如果您觉得这系列的文章对你有所帮助,
欢迎打赏。
支付宝打赏
(1)(1)(4)(4)(6)(2)(2)(4)(10)(4)(3)(4)(13)(1)(1)(15)(1)(5)(1)(1)(2)(1)(1)(7)(1)(2)(14)(37)(1)(8)(3)(2)(4)(2)(1)(12)(8)(2)(1)(2)(6)(4)(9)(6)(17)(1)(4)(6)(2)(23)(7)(4)(3)(2)(6)(2)(2)(1)(2)(1)(4)(1)(1)(3)(18)MSSQL(41)
两者都可以执行动态sql
sp_executesql& 可以在动态 sql 中使用变量,并且将变量输出
exec 则只能执行动态 sql 和 存储过程,也可以使用表变量,执行时需要加括号,唯一不足就是不可以输出变量
create table t_test(id int,name varchar(10),value int)
declare @v_count int,@n_avgnum numeric,@v_tablename nvarchar(30),@v_sql nvarchar(4000),@v_id int
set @v_id=1
set @v_tablename='T_TEST'
set @v_sql = 'select * from '+@v_tablename
exec(@sql)
set @v_sql='select @v_count=count(1),@n_avgnum=avg(value) from '+@v_tablename+ ' where id='+@v_id
exec sp_executesql @v_sql,
N'@v_count numeric output,@n_avgnum numeric output',
@v_count output,@n_avgnum
output -- 输出参数
select @v_count,@n_avgnum
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:130572次
积分:5090
积分:5090
排名:第5507名
原创:392篇
转载:33篇

我要回帖

更多关于 exec sp attach db 的文章

 

随机推荐