博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL中in参数在存储过程中传递及使用的方法
阅读量:7009 次
发布时间:2019-06-28

本文共 1143 字,大约阅读时间需要 3 分钟。

背景:

1、使用存储过程

2、存储过程中有in

3、in括号里面的内容作为参数传递

解决方案:

1、直接拼接sql

可在存储过程中拼接字符串,然后执行此字符串,类似于js中的eval

PROCEDURE [dbo].[INSelect]    @P_0 NVARCHAR(600)        AS  DECLARE @A VARCHAR(6000)  SET @A='SELECT * FROM testTb WHERE zip IN ('+@P_0+')' 

  然后用系统存储过程sp_executesql执行@A即可!

2、定义方法将字符切割为集合

切割字符串方法

Create function  func_split_hongfei0416j (@SourceSql   varchar(8000),@StrSeprate   varchar(2))     returns   @temp   table(col   varchar(100))     as       begin     declare   @ch   as   varchar(100)     set   @SourceSql=@SourceSql+@StrSeprate       while(@SourceSql<>'')                     begin                     set   @ch=left(@SourceSql,charindex(@StrSeprate,@SourceSql,1)-1)     insert   @temp   values(@ch)     set   @SourceSql=stuff(@SourceSql,1,charindex(@StrSeprate,@SourceSql,1),'')                     end     return     end

存储过程书写demo

CREATE PROC ps_spit_test      (     @lettertype VARCHAR(100)  )      AS      BEGIN        select * from y_paper   where lettertype in (select Col As lettertype from dbo.func_split_hongfei0416j(@lettertype,','))endexec ps_spit_test '118,148,163'

 

如果是简单的sql直接使用第一种方法即可,

复杂写的可以使用第二方法。

 

也可以使用临时表的方法,

不过依然需要先切割字符串。

 

转载地址:http://dnttl.baihongyu.com/

你可能感兴趣的文章
如何为你的Linux服务器加把锁
查看>>
大数据,让“营销”发生质的改变——专访泰一数据副总封雷
查看>>
Java 读取大文件方法
查看>>
七项最酷的数据中心创新
查看>>
5G NR标准制定加速 将对运营商计划产生重大影响
查看>>
怎么足不出户在网上配钥匙
查看>>
大数据应用价值发现的三大方法
查看>>
“摄像头新规”是民生利好 但落实仍有难度
查看>>
Skype 正式为 iOS 和 Android 用户推出移动端群组视频聊天功能
查看>>
微软将于5月9号停止对初版Win10(1507)支持
查看>>
爱立信网络社会愿景这7年:MWC2016看哪些梦想已成为现实
查看>>
《软件需求工程(第2版)》一1.2 什么是软件需求
查看>>
企业微信来了:你的微信朋友圈让老板看吗?
查看>>
IT建设不停歇 新华三加速医疗物联网融合进程
查看>>
顶尖专家齐聚 2016中国人工智能大会讲师名单和议题公布
查看>>
大数据分析思路的4点心得
查看>>
小程故事多 | 看来微服务就是一把双刃剑
查看>>
互联网变革的十字路口 数据中心面临混合云转型
查看>>
IBM公司推出旨在促进混合云的云管理工具
查看>>
伪共享和缓存行
查看>>