exec和sp_executesql

sqlserver中的exec和sp_executesql都能执行动态的sql语句和存储过程,但exec用法较为简单,不能带参数,也没有返回参数。

sp_executesql则显得功能更加完善,可以用输入参数和输出参数,下面这个例子记录了sp_executesql的用法。

declare @sql nvarchar(1000),
@oazaName varchar(20),
@cnt int
set @oazaName = ‘abc‘

set @sql = ‘select @count=count(*) from dbo.Aza where oazaName like ‘‘%‘‘ +  @oazaName + ‘‘%‘‘‘
print @sql
-- 注意like查询时用变量该如何拼接 ‘%‘ +
-- 输出SQL语句:select @count=count(*) from dbo.Aza where oazaName like ‘%‘ +  @oazaName + ‘%‘
exec sp_executesql
--这里定义sql文
@[email protected],
--这里书写@sql中用到的变量,多个变量时,将全部定义放到@params变量里
@params =N‘@oazaName as varchar(20),@count as int output‘,
--下面的赋值语句个数由@params定义的变量个数决定,
--注意输出变量的定义和赋值语句处都要加output关键字
@oazaName =‘飯‘,
@count [email protected] output
-- 查看输出变量的值,感觉@cnt是传的地址(类似与C#的ref关键字)
select @cnt

对于带参数的查询,可以防止sql注入等攻击,因此有必要好好掌握sp_executesql的用法。

时间: 2024-12-28 04:26:48

exec和sp_executesql的相关文章

SQLServer : EXEC和sp_executesql的区别

MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql.通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能(对于这个我在后面的例子中会详加说明),还可以编写更安全的代码.EXEC在某些情况下会更灵活.除非您有令人信服的理由使用EXEC,否则尽量使用 sp_executesql. EXEC的使用 EXEC命令有两种用法,一种是执行一

EXEC 和 SP_EXECUTESQL的区别

摘要: MSSQL为我们提供了两种动态执行sql语句的命令:EXEC 和 SP_EXECUTESQL.通常SP_EXECUTESQL更具优势,因为它提供了输入输出的接口,且能够重用执行计划,大大提高执行效率,而且不会导致SQL注入,比较安全,这些优势都是EXEC所不具有的,EXEC通常用来执行存储过程.所以,除非有充分的理由,否则在执行动态SQL的时候尽量使用SP_EXECUTESQL. 用法举例: -----------EXEC: DECLARE @TableName VARCHAR(50),

[转]SQLServer : EXEC和sp_executesql的区别

MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql.通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能(对于这个我在后面的例子中会详加说明),还可以编写更安全的代码.EXEC在某些情况下会更灵活.除非您有令人信服的理由使用EXEC,否则尽量使用 sp_executesql. EXEC的使用 EXEC命令有两种用法,一种是执行一

SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别

原文:SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法. 先建立一个表,并添加一些数据来进行演示: CREATE TABLE t_student( Id INT NOT NULL, Name NVARCHAR (10) NULL, Age TINYINT NULL, School NVARCHAR(20) NULL, Class NVAR

sqlserver 中EXEC和sp_executesql使用介绍

sqlserver 中EXEC和sp_executesql使用介绍 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能(对于这个我在后面的例子中会详加说明),还可以编写更安全的代码.EXEC在某些情况下会更灵活.除非您有令人信服的理由使用EXEC,否侧尽量使用sp_execu

Sql语句拼接(EXEC和sp_executesql的区别)

1.前言 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能(对于这个我在后面的例子中会详加说明),还可以编写更安全的代码.EXEC在某些情况下会更灵活.除非您有令人信服的理由使用EXEC,否侧尽量使用sp_executesql. 2.EXEC的使用 EXEC命令有两种用法,

exec vs sp_executesql

1.exec  vs  sp_executesql 1.1 说到exec了解SQLServer的朋友第一反应应该是它用来执行存储过程,对的这是其一,另一个作用是执行一个动态批处理.总结下:a.执行一个存储过程 b.执行一条sql语句. 1.2 sp_executesql SQL Server 2008 R2 联机丛书:执行可以多次重复使用或动态生成的 Transact-SQL 语句或批处理.Transact-SQL 语句或批处理可以包含嵌入参数. 2.二者比较 2.1.sp_executesql

【Sqlserver】T-SQL中EXEC 与 SP_EXECUTESQL的 区别

MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法. 先建立一个表,并添加一些数据来进行演示: CREATE TABLE t_student( Id INT NOT NULL, Name NVARCHAR (10) NULL, Age TINYINT NULL, School NVARCHAR(20) NULL, Class NVARCHAR(10) NULL, Score FLOAT NULL, CONSTRAI

EXEC与sp_executesql的区别及应用

execute,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的,如: exec sp_executesql @sql, N'@count int out,@id varchar(20)', @cou out ,@id @sql为拼成的动态sql N'@count int out,@id varchar(20)'为拼成的动态sql内的参数列表 @cou out,@id为为动态sql内参数列