SQL存储过程参数问题
create procedure myprocdure 
@sqlstr nvarchar(1000) 
as 
exec (@sqlstr) 
go 
使用: 
EXEC MYPROCDURE N'SELECT * FROM TABLENAME'
==============================
附:动态SQL基本语法
1: 
普通SQL语句可以用Exec执行 
eg: Select * from tableName 
Exec('select * from tableName') 
sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 
2: 
字段名,表名,数据库名之类作为变量时,必须用动态SQL 
eg: 
declare @fname varchar(20) 
set @fname = '[name]' 
Select @fname from sysobjects -- 错误 
Exec('select ' + @fname + ' from sysobjects') -- 请注意 加号前后的 单引号的边上要加空格 
exec sp_executesql N' select ' + @fname + ' from sysobjects' 
当然将字符串改成变量的形式也可 
declare @s varchar(1000) 
set @s = 'select ' + @fname + ' from sysobjects' 
Exec(@s) -- 成功 
exec sp_executesql @s -- 此句会报错 
declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) 
set @s = 'select ' + @fname + ' from sysobjects' 
Exec(@s) -- 成功 
exec sp_executesql @s -- 此句正确, 
3: 输出参数 
eg: 
declare @num, 
@sqls 
set @sqls='select count(*) from ' + @servername + '.a.dbo.b' 
exec(@sqls) 
我如何能将exec执行的结果存入变量@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 
declare @num varchar(10), 
@sqls nvarchar(4000) 
set @sqls='select @a='''''''''''''''' ' 
exec sp_executesql @sqls,N'@a varchar(10) output',@num output 
select @num 
来源:http://www.cnblogs.com/yja9010
更新: http://jumpbyte.cn
声明:本博客原创文字只代表本人的观点或结论,于网站他人无关,非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号