存储过程中执行动态Sql语句
2011-07-21 22:53
555 查看
SQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有。还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能,还可以编写更安全的代码。EXEC在某些情况下会更灵活。除非您有令人信服的理由使用EXEC,否侧尽量使用sp_executesql.
1.EXEC的使用
EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理。以下所讲的都是第二种用法。
下面先使用EXEC演示一个例子,代码1
代码
create PROCEDURE GetData
@tbName nvarchar(10),
@colName nvarchar(10),
@Name nvarchar(10)
AS
BEGIN
declare @sql nvarchar(50);
set @sql='select '+ @colName+' from ' +@tbName+ ' where name=@whereName';
--注意此句不可以写成如下:
-- set @sql='select @colName from @tbName where name=@whereName';
exec sp_executesql
@sql,
N'@whereName nvarchar(10)',
@Name
END
也就是说exec sp_executesql语句的参数声明部分只能声明动态sql的where子句的参数。
转载From:http://www.cnblogs.com/RascallySnake/archive/2010/05/20/1739839.html
1.EXEC的使用
EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理。以下所讲的都是第二种用法。
下面先使用EXEC演示一个例子,代码1
代码
create PROCEDURE GetData
@tbName nvarchar(10),
@colName nvarchar(10),
@Name nvarchar(10)
AS
BEGIN
declare @sql nvarchar(50);
set @sql='select '+ @colName+' from ' +@tbName+ ' where name=@whereName';
--注意此句不可以写成如下:
-- set @sql='select @colName from @tbName where name=@whereName';
exec sp_executesql
@sql,
N'@whereName nvarchar(10)',
@Name
END
也就是说exec sp_executesql语句的参数声明部分只能声明动态sql的where子句的参数。
转载From:http://www.cnblogs.com/RascallySnake/archive/2010/05/20/1739839.html
相关文章推荐
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- 在SQL存储过程内拼条件,动态生成SQL语句执行
- 存储过程中执行动态Sql语句
- MySQL 存储过程中执行动态SQL语句的方法
- 转贴自微软MSDN:建议执行动态SQL时,使用sp_executesql 存储过程而不要使用EXECUTE 语句
- MSSQL存储过程中执行动态Sql语句
- sqlserver 存储过程中拼接sql语句 动态执行
- mysql 存储过程动态执行sql语句
- oracle存储过程中如何执行动态SQL语句
- MySQL 存储过程中执行动态 SQL 语句
- MySQL存储过程中实现执行动态SQL语句的方法
- MySQL 存储过程中执行动态SQL语句的方法
- 存储过程中执行动态Sql语句
- mysql存储过程执行动态sql语句并返回值
- mysql存储过程执行动态sql语句
- mysql存储过程执行动态sql语句
- 存储过程中执行动态Sql语句