SQL Stored Procedure – tham số là danh sách

–Hàm tách chuỗi

CREATE  FUNCTION SplitString

(

@Input NVARCHAR(MAX),

@Character CHAR(1)

)

RETURNS @Output TABLE (

CT int

)

AS

BEGIN

DECLARE @StartIndex INT, @EndIndex INT

SET @StartIndex = 1

IF SUBSTRING(@Input, LEN(@Input) – 1, LEN(@Input)) <> @Character

BEGIN

SET @Input = @Input + @Character

END

WHILE CHARINDEX(@Character, @Input) > 0

BEGIN

SET @EndIndex = CHARINDEX(@Character, @Input)

INSERT INTO @Output(CT)

SELECT SUBSTRING(@Input, @StartIndex, @EndIndex – 1)

SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input))

END

RETURN

END

GO

–Gọi hàm trong Stored Proc

GO

CREATE proc [dbo].[TestProc2]

@ct varchar(100)

as

select * from products

where productid in (select CT from dbo.SplitString(@ct,’,’))

 

–Chay thu

testproc2 ‘1,2,3,4,5’

testproc2 ‘1,2,3’

Stored procedure với tham số đầu vào là tên bảng cần thực hiện câu truy vấn

Hướng dẫn dưới đây giúp chúng ta định nghĩa stored procedure với tham số là tên bảng cần truy vấn dữ liệu

create PROCEDURE xyz

@TableName Varchar(50)

AS

BEGIN

DECLARE @query nvarchar(max)

set @query = ‘SELECT * FROM ‘+ @TableName

exec sp_executesql @query

END

— Thực hiện stored procedure

exec xyz ‘Products’