存储过程中可以像查询Sql一样给定义参数面板的参数吗

例如有个下拉框为saleList,那么在存储过程加个条件sale= ‘“+saleList+”’ 这样

,图1是查询Sql,图二是存储过程,按照图一的propList写条件,propList是多选下拉框

image.png

image.png

Q4512K41FF 发布于 2022-7-28 09:20 (编辑于 2022-7-28 14:10)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-7-28 09:20(编辑于 2022-7-28 14:27)

可以啊  存储过程可以传入参数啊

------------------

参考SQL,把最后的print(@sql_) 改成 EXEC(@SQL_)

image.png

image.png

  • 乔治在上海 乔治在上海(提问者) 好的谢谢,因为我怕如果不行会影响数据所以先问一下
    2022-07-28 09:21 
  • 乔治在上海 乔治在上海(提问者) 我刚刚更新了一下问题你可以再看一下,这样具体该怎么实现呢,感觉语法有点不一样
    2022-07-28 13:20 
  • Z4u3z1 Z4u3z1 回复 Q4512K41FF(提问者) 不晓得你的数据库字典,不清楚你的场景 你的两个SQL对应不上...............
    2022-07-28 14:02 
  • Q4512K41FF Q4512K41FF(提问者) 回复 Z4u3z1 对,我的意思是图二怎么按照图一来加这个if条件
    2022-07-28 14:07 
  • Q4512K41FF Q4512K41FF(提问者) 回复 Z4u3z1 刚刚我完善了一下问题,主要是圈中的这一行该怎么写
    2022-07-28 14:09 
最佳回答
0
CD20160914Lv8专家互助
发布于2022-7-28 14:15

这里前面与最后还少一个引号号。你用函数替换逗号后。目前它是这样的

image.png

假如下拉框多个值    张三,李四,王大1

那么你的sql替换后得到    in(张三','李四','王大1)

而正确的结果是要  in ('张三','李四','王大1')

  • Q4512K41FF Q4512K41FF(提问者) 对就是这个引号比较烦人,看不出来哪缺引号了,我把这行sql放出来你看下 AND ( CASE WHEN ISNULL(@propList,\'\')=\'\' THEN \'\' ELSE d.cCusDefine4 in (replace(@propList,\',\',\',\')) END) = @propList
    2022-07-28 14:21 
  • CD20160914 CD20160914 回复 Q4512K41FF(提问者) 你百度一下怎么在存储中再加引号。目前没有环境测试不到
    2022-07-28 14:25 
  • Q4512K41FF Q4512K41FF(提问者) 回复 CD20160914 好的感谢
    2022-07-28 14:26 
  • 2关注人数
  • 540浏览人数
  • 最后回答于:2022-7-28 14:27
    请选择关闭问题的原因
    确定 取消
    返回顶部