Benar, saya perlu memberi Anda latar belakang pertama.
Bila Anda mengizinkan parameter SSRS untuk memilih beberapa nilai, Pemilihan beberapa nilai akan membuat string nilai yang dipisahkan koma sebagai satu string
'value1,value2,value3'
Untuk memeriksa nilai dalam string menggunakan IN
operator kita membutuhkan string yang digabungkan dengan koma sesuatu seperti ini ....
'value1','value2','value3'
Prok Anda
Sekarang di proc Anda ketika Anda memasukkan nilai secara eksplisit, ia memasukkan beberapa nilai ke dalam tabel Anda.
INSERT INTO Table_Value_Param
VALUES ('value1'), --<-- 1st value/Row
('value2'), --<-- 2nd Value/Row
('value3') --<-- 3rd Value/Row
dan ini memberi Anda kembali hasil yang diharapkan seperti ketika di dalam prosedur Anda, Anda menjalankan pernyataan seperti
SELECT *
FROM Table_Name
WHERE ColumnName IN (SELECT ColumnName
FROM Table_Value_Param)
Di sisi lain ketika Anda mencoba memasukkan ke dalam tabel menggunakan Parameter laporan SSRS, tabel Anda memasukkan nilai seperti
INSERT INTO Table_Value_Param
VALUES ('value1,value2,value3') --<-- One Row/Value containing all the values comma separated
Solusi
Membuat TVP
dalam situasi ini tidak terlalu membantu, Yang saya lakukan adalah menggunakan dbo.Split()
berfungsi di dalam prosedur saya.
Anda dapat menemukan banyak definisi untuk fungsi split online, untuk beberapa definisi yang keren lihat di sini Split Function equivalent in tsql?
Setelah Anda membuat fungsi split ini, cukup gunakan fungsi ini di dalam definisi prosedur Anda, Anda bahkan tidak memerlukan parameter nilai Tabel.
Sesuatu seperti ini...
SELECT *
FROM Table_Name
WHERE ColumnName IN (
SELECT Value
FROM dbo.Split(@Report_Param, ',')
)