我想將存儲(chǔ)過程中要使用的表名作為存儲(chǔ)過程的輸入?yún)?shù),能做到嘛?
各位大俠幫忙啊
最好能有個(gè)完整的小例子! 問題點(diǎn)數(shù):20、回復(fù)次數(shù):4Top
這樣就可以了:
create procedure aProc
@TableName Varchar(30)
as
declare @SQLStr nvarchar(2000)
begin
set @SQLStr=N'select Count(*) as [表'+@TableName+'的總記錄數(shù)為] from '+@TableName
Execute sp_executesql @SQLStr
end
大量電腦書籍下載:
http://www.netyi.net/in.asp?id=ForMoreU
Top
這樣就可以了:
create procedure aProc
@TableName Varchar(30)
as
declare @SQLStr nvarchar(2000)
begin
set @SQLStr=N'select Count(*) as [表'+@TableName+'的總記錄數(shù)為] from '+@TableName
Execute sp_executesql @SQLStr
end
調(diào)用時(shí)這樣:
aProc '表名'
大量電腦書籍下載:
http://www.netyi.net/in.asp?id=ForMoreU
Top
動(dòng)態(tài)SQL語(yǔ)句的一些常見寫法
1:普通SQL語(yǔ)句可以用Exec執(zhí)行
eg: Select * from tableName
Exec('select * from tableName')
sp_executesql N'select * from tableName' -- 請(qǐng)注意字符串前一定要加N
2:字段名,表名,數(shù)據(jù)庫(kù)名之類作為變量時(shí),必須用動(dòng)態(tài)SQL
eg:
declare @fname varchar(20)
set @fname = '[name]'
Select @fname from sysobjects -- 錯(cuò)誤
Exec('select ' + @fname + ' from sysobjects') -- 請(qǐng)注意 加號(hào)前后的 單引號(hào)的邊上要加空格
exec sp_executesql N' select ' + @fname + ' from sysobjects'
當(dāng)然將字符串改成變量的形式也可
declare @s varchar(1000)
set @s = 'select ' + @fname + ' from sysobjects'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句會(huì)報(bào)錯(cuò)
declare @s Nvarchar(1000) -- 注意此處改為nvarchar(1000)
set @s = 'select ' + @fname + ' from sysobjects'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正確,
3: 輸出參數(shù)
eg:
declare @num,
@sqls
set @sqls='select count(*) from ' + @servername + '.a.dbo.b'
exec(@sqls)
我如何能將exec執(zhí)行的結(jié)果存入變量@num中
declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from '+@servername+'.a.dbo.b'
exec sp_executesql @sqls,N'@a int output',@num output
select @num
Top
聯(lián)系客服