在SP中传递多值变量 [英] Pass Multi valued variable in SP

查看:72
本文介绍了在SP中传递多值变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





你可以帮我吗



我需要通过va,vb, IN CLAUSE中的vc,vd,ve,vv值通过商店程序



如何将多值变量传递给存储过程



例如:



Hi,

Can u pl help me

I need to pass va,vb,vc,vd,ve,vv values in IN CLAUSE via store procedure

how to pass Multivalued Variables to a Stored Procedure

Eg:

SELECT  DISTINCT    PrdVarCode[Product Code],PrdVarVendorType[Vendor Type],PrdChrActiveYN[Active Y/N],
                (SELECT     EWMVarWarehouseName
                 FROM       dbo.ESWarehouseMst (NOLOCK)
                 WHERE      EWMIntID=sh.WhIntEWMID)[WareHouse Name]
        FROM    dbo.CbzPrdMst (NOLOCK) pm INNER JOIN dbo.CbzStockonhand (NOLOCK) sh
                ON pm.PrdVarCode=sh.WhIntPrdCode
        WHERE   StockStatus=1 AND PrdVarVendorType IN(@VarPrdVendorType) AND PrdChrActiveYN='Y'
                AND WhIntEWMID IN (SELECT    EWMIntID
                                   FROM      dbo.ESWarehouseMst (NOLOCK)
                                   WHERE    (@VarEWMIntID) LIKE '%|'+CONVERT(VARCHAR,EWMIntID)+'|%')





这是我的sp的一部分,我需要在@VarPrdVendorType中传递va,vb,vc,vd,ve



问候

Dhana



this is my part of sp, i need to pass va,vb,vc,vd,ve in @VarPrdVendorType

Regards
Dhana

推荐答案

将此代码块附加到存储过程中,以便它可以解决您的问题



Append this block of code to your stored procedure so that it will solves your problem

CREATE  Table #TempTable
(
    Val Varchar(max)
)

 DECLARE @LenString int

      WHILE len( @VarPrdVendorType ) > 0
         BEGIN

            SELECT @LenString =
               (CASE charindex( ',', @v )
                   WHEN 0 THEN len( @v )
                   ELSE ( charindex( ',', @v ) -1 )
                END
               )

            INSERT INTO #Temptable
               SELECT substring( @VarPrdVendorType, 1, @LenString )

            SELECT @VarPrdVendorType =
               (CASE ( len( @v ) - @LenString )
                   WHEN 0 THEN ''
                   ELSE right( @VarPrdVendorType, len( @v ) - @LenString - 1 )
                END
               )
         END





和代码块为



and Code block as

Quote:

AND PrdVarVendorType IN(@VarPrdVendorType)

AND PrdVarVendorType IN(@VarPrdVendorType)







AND PrdVarVendorType IN (Select Val From #Temptable)





你可以在用户定义的函数中使用上面的代码,这样你就可以使用每个地方和代码看起来像





you can use above code in user defined function so that you can use every where and code looks like

AND PrdVarVendorType IN (Select * FROM UserDefinedFunction)


这篇关于在SP中传递多值变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆