动态SQL初探

--1 、普通SQL语句   

Select CustomerID,

CompanyName,ContactName,Address

,City,Phone From dbo.Customers  

GO

EXEC ('Select CustomerID,

CompanyName,ContactName,Address

,City,Phone From dbo.Customers')

GO

EXEC Sp_ExecuteSql N'Select CustomerID,

 CompanyName,ContactName,Address,City,Phone From dbo.Customers'----- 注意字符串加  

---2、字段名,表名为变量时,必须用动态SQL

Declare @fname varchar(100)

Set @fname='CustomerID,CompanyName,ContactName,Address,City,Phone'

Declare @StrSQL varchar(1000)

Set @StrSQL='Select '+@fname+' from dbo.Customers'

Exec(@StrSQL) -- 成功

--exec sp_executesql @StrSQL -- 此句会报错,因为定义@StrSQL数据类型为varchar,改为n varchar即可

GO

Declare @fname varchar(100)

Set @fname='CustomerID,CompanyName,ContactName,Address,City,Phone'

Declare @StrSQL Nvarchar(1000) --改为nvarchar(1000)

Set @StrSQL = 'select ' + @fname + ' from dbo.Customers'

Exec(@StrSQL)

exec sp_executesql @StrSQL

 

--3、以参数形式输出

Declare @StrSQL Nvarchar(1000)

Set @StrSQL='Select Count(*) From dbo.Customers'

Exec(@StrSQL)

Go

--将结果放到变量中,输出参数

Declare @Counter int

Declare @StrSQL Nvarchar(1000)

Set @StrSQL='Select @Counter=Count(*) From dbo.Customers'

Exec Sp_ExecuteSql @StrSQL,N'@Counter int output',@Counter output

Select Counter=@Counter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值