动态SQL语句语法

原帖:http://blog.csdn.net/htl258/archive/2009/04/24/4106390.aspx

 

-- 动态语句语法
/*
*****************************************************************************************************************************************************
动态语句语法:exec/sp_executesql语法

整理人:中国风(Roy)

日期:2008.06.06
*****************************************************************************************************************************************************
*/
--动态语句语法:

-- 方法1查询表改为动态
select * from sysobjects
exec ( ' select ID,Name from sysobjects ' )
exec sp_executesql N ' select ID,Name from sysobjects ' -- 多了一个N为unicode

-- 方法2:字段名,表名,数据库名之类作为变量时,用动态SQL
declare @FName varchar ( 20 )
set @FName = ' ID '
exec ( ' select ' + @FName + ' from sysobjects where ' + @FName + ' =5 ' )


declare @s varchar ( 1000 )
set @s = N ' select ' + @FName + ' from sysobjects where ' + @FName + ' =5 '
exec sp_executesql @s -- 会报错


declare @s nvarchar ( 1000 ) -- 改为nvarchar
set @s = N ' select ' + @FName + ' from sysobjects where ' + @FName + ' =5 '
exec sp_executesql @s -- 成功


-- 方法3:输入参数

declare @i int , @s nvarchar ( 1000 )
set @i = 5
exec ( ' select ID,Name from sysobjects where ID= ' + @i )

set @s = ' select ID,Name from sysobjects where ID=@i '
exec sp_executesql @s ,N ' @i int ' , @i -- 此处输入参数要加上N

-- 方法4:输出参数

declare @i int , @s nvarchar ( 1000 )
set @s = ' select @i=count(1) from sysobjects '

-- 用exec
exec ( ' declare @i int ' + @s + ' select @i ' ) -- 把整个语句用字符串加起来执行

-- 用sp_executesql
exec sp_executesql @s ,N ' @i int output ' , @i output -- 此处输出参数要加上N
select @i


-- 方法5:输入输出

-- 用sp_executesql
declare @i int , @con int , @s nvarchar ( 1000 )
set @i = 5
select @s = ' select @con=count(1) from sysobjects where ID>@i '
exec sp_executesql @s ,N ' @con int output,@i int ' , @con output , @i
select @con

-- 用exec
declare @i int , @s nvarchar ( 1000 )
set @i = 5
select @s = ' declare @con int select @con=count(1) from sysobjects where ID> ' + rtrim ( @i ) + ' select @con '
exec ( @s )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值