存储过程参数 用到in

在使用存储过程中,有用到in

1:首先增加一个 split 函数

ALTER    FUNCTION [dbo].[Split]   
--用来在存储过程中使用in的函数,这个函数的作用呢,就是把你输入的字符按一定的分隔符分开,并放在一个表里的一列里,然后返回。
(   
@c VARCHAR(300) ,   
@split VARCHAR(50)   
)   
RETURNS @t TABLE ( col VARCHAR(50) )   
AS  
BEGIN  
    WHILE ( CHARINDEX(@split, @c) <> 0 )   
        BEGIN  
            INSERT  @t( col )   
            VALUES  ( SUBSTRING(@c, 1, CHARINDEX(@split, @c) - 1) )   
            SET @c = STUFF(@c, 1, CHARINDEX(@split, @c), '')   
        END  
    INSERT  @t( col ) VALUES  ( @c )   
    RETURN  
END

2:在存储过程中,这样写

image

create   proc 查询公司员工下现有公司(@guwen varchar(200))
as
--用途:查询员工下所有的公司(目前还在我公司旗下的)
--参数为 'Queenie,Thomas,Cat,Sweet,Rain'  
--exec 查询公司员工下现有公司 'Queenie,Thomas,Cat,Sweet,Rain'
begin 

SELECT a.id, a.COCN AS 公司中文名, a.COEN AS 公司英文名, a.CODATE AS 公司成立时间, 
      b.cTypeName AS 公司类型, c.ename AS 顾问, a.F1 AS 股东一中文姓名, 
      a.F1SUR AS 股东一英文姓, a.F1OTHER AS 股东一英文名, a.CMAN AS 联系人, 
      a.Sex AS 联系人性别, a.CMAIL AS 联系人email, 
      a.CTEL 联系人电话 ,a.CMOB AS 联系人手机
FROM List a INNER JOIN
      alz_companyType b ON a.companyTypeId = b.cTypeId INNER JOIN
      alz_guwen c ON a.GW = c.guwenid
WHERE (c.ename IN (select * from Split(@guwen,','))) AND 
      (a.ATDATEState <> '5')
ORDER BY a.CODATE 

end

转载于:https://www.cnblogs.com/iceicebaby/archive/2011/05/18/2050168.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值