ストアド プロシージャに int 値のリストを含む nvarchar(MAX) があります。ストアド プロシージャにint list を渡すことができないため、このようにしましたが、データ型が int であるため問題が発生しています。文字列のリストを比較したい。私が同じことをする方法はありますか?
---myquerry----where status in (@statuslist)
しかし、ステータスリストにはintではなく文字列値が含まれるようになったので、それらをINTに変換するにはどうすればよいですか?
アップデート:
USE [Database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP]
(
@FromDate datetime = 0,
@ToDate datetime = 0,
@ID int=0,
@List nvarchar(MAX) //This is the List which has string ids//
)
AS SET FMTONLY OFF; DECLARE @sql nvarchar(MAX)、@paramlist nvarchar(MAX)
SET @sql = 'SELECT ------ and Code in(@xList)
and -------------'
SELECT @paramlist = '@xFromDate datetime,@xToDate datetime,@xId int,@xList nvarchar(MAX)'
EXEC sp_executesql @sql, @paramlist,
@xFromDate = @FromDate ,@xToDate=@ToDate,@xId=@ID,@xList=@List
PRINT @sql
そのため、分割する関数を実装すると、 (@List,',')として受け入れられないため、文字または区切り文字を指定できません。
または(','+@List+',')。