Stored procedures Id列表的StoredProc数据类型
如果我想传递ID列表/字符串,例如1、2、5、12、99,我应该在下面的StoredProc中定义什么样的数据类型Stored procedures Id列表的StoredProc数据类型,stored-procedures,sql-server-2012,Stored Procedures,Sql Server 2012,如果我想传递ID列表/字符串,例如1、2、5、12、99,我应该在下面的StoredProc中定义什么样的数据类型 create PROCEDURE [dbo].[TABLE_Delete] -- Add the parameters for the stored procedure here @TId datatype = null AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from
create PROCEDURE [dbo].[TABLE_Delete]
-- Add the parameters for the stored procedure here
@TId datatype = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
delete from dbo.TABLE T where T.Id in (@TId)
END
“我的TId”字段的类型为Int您需要以nvarcharxx的形式传递数据,例如“1,2,3,4” 然后使用split函数将它们拆分,并将查询编写为
delete from dbo.TABLE T where T.Id in (dbo.split(@param,','))
这是Split函数的代码
CREATE FUNCTION Split
(
@delimited nvarchar(max),
@delimiter nvarchar(100)
) RETURNS @t TABLE
(
-- Id column can be commented out, not required for sql splitting string
id int identity(1,1), -- I use this column for numbering splitted parts
val nvarchar(max)
)
AS
BEGIN
declare @xml xml
set @xml = N'<root><r>' + replace(@delimited,@delimiter,'</r><r>') + '</r></root>'
insert into @t(val)
select
r.value('.','varchar(max)') as item
from @xml.nodes('//root/r') as records(r)
RETURN
END
GO
另一种分裂方式
CREATE FUNCTION [dbo].[fnSplitString]
(
@string NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @output TABLE(splitdata NVARCHAR(MAX)
)
BEGIN
DECLARE @start INT, @end INT
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
WHILE @start < LEN(@string) + 1 BEGIN
IF @end = 0
SET @end = LEN(@string) + 1
INSERT INTO @output (splitdata)
VALUES(SUBSTRING(@string, @start, @end - @start))
SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)
END
RETURN
END
您从何处调用sp?对于Java应用程序,很抱歉,我没有遵循您在此处所写的内容: