execute sp_executesql 拼接sql 并执行

execute 执行拼接的sql

execute (sql) 表示执行字符串sql

execute  sql 表示执行存储过程,名字为sql 的存储过程

这里主要说执行字符串sql

declare @value nvarchar(100);
 declare @sql nvarchar(199);
 set @sql = N'select TOP 1 name from admin where name= '+@value+''
execute (@sql)

这里不能执行待输出值的参数,可能是我不会写,如果有朋友能写告诉我下谢谢

下面 这个可以执行带输出值的参数

sp_executesql 执行拼接的sql

declare @value nvarchar(100);
 declare @sql nvarchar(199);
 DECLARE @ParmDefinition nvarchar(500);
 set @sql = N'select TOP 1 @value= name from admin'
SET @ParmDefinition = N' @value varchar(30) OUTPUT';  -- 定义参数
exec sp_executesql @sql,@ParmDefinition, @value OUTPUT   --@value OUTPUT  提供输出参数
SELECT @value


语法 

sp_executesql [ @stmt = ] stmt
[ 
    {, [@params=] N'@parameter_name data_type [ OUT | OUTPUT ][,...n]' } 
     {, [ @param1 = ] 'value1' [ ,...n ] }
]

stmt 也就执行的sql

包含 Transact-SQL 语句或批处理的 Unicode 字符串。stmt 必须是 Unicode 常量或 Unicode 变量。不允许使用更复杂的 Unicode 表达式(例如使用 + 运算符连接两个字符串)。不允许使用字符常量。如果指定了 Unicode 常量,则必须使用N 作为前缀。例如,Unicode 常量 N'sp_who' 是有效的,但是字符常量 'sp_who' 则无效。字符串的大小仅受可用数据库服务器内存限制。在 64 位服务器中,字符串大小限制为 2 GB,即 nvarchar(max) 的最大大小。

@params 也就是上边列子的 @ParmDefinition

 SQL 语句或批处理不包含参数 @params  可以为空 ,若sql 中包含参数必须定义才参数 如列子中的 @value  必须定义 @value varchar(30) OUTPUT 

@params1 输入参数  如列子中的  @value OUTPUT  应为这里没用到输入值,所以没有值,只有输出值 ,若要输入值 则可以写为@value=@value OUTPUT 如不需要输出 去掉所有 OUTPUT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值