为了账号安全,请及时绑定邮箱和手机立即绑定

exec sp_executesql 如何拼装语句

exec sp_executesql 如何拼装语句

叮当猫咪 2018-08-10 14:08:09
我直接用 如下sql语句运行成功查到理想数据exec sp_executesql N'Select * FROM FC_Repair WHERE           F_RepairDepartmentId in          (               ''ace7f0e7-f158-4587-920d-e76546885198'',''bf421a22-786b-40fd-8afc-c3e5e2364901''          )  '修改为参数式后,查不到数据,请问如果修改下面的sql语句。这是用dapper DynamicParameters动态参数查询后生成的sql语句,所以在不动原有sql格式的前提下,找到一个更优解呢?exec sp_executesql N'Select * FROM FC_Repair WHERE           F_RepairDepartmentId in          (               @F_RepairDepartmentId0          )  ',  N'@F_RepairDepartmentId0 nvarchar(4000)',@F_RepairDepartmentId0= N'''ace7f0e7-f158-4587-920d-e76546885198'',''bf421a22-786b-40fd-8afc-c3e5e2364901'' '
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

这种 IN中的语句确实不能像你那样写,无论如何@F_RepairDepartmentId0都被解释为 单独一个 字符串。
对于IN, 需要改成字符串拼接sql的形式,如下面这样:

DECLARE @sql NVARCHAR(4000);DECLARE @F_RepairDepartmentId0 NVARCHAR(3000);SET @F_RepairDepartmentId0 = N'''ace7f0e7-f158-4587-920 D -e76546885198'', ''bf421a22-786b-40fd-8afc-c3e5e2364901''';SET @sql = N'SELECT *
                       FROM FC_Repair
                       WHERE
                         F_RepairDepartmentId IN
                         (' + @F_RepairDepartmentId0 + ')';

EXEC sp_executesql @sql


查看完整回答
反对 回复 2018-08-12
  • 1 回答
  • 0 关注
  • 719 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信