Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Melewati beberapa parameter nilai dalam SSRS ke prosedur tersimpan

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, ',')
                       ) 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sintaks yang salah di dekat 's'. tanda kutip tidak tertutup setelah string karakter ')'

  2. Reset AutoIncrement di SQL Server setelah Hapus

  3. kunci unik berdasarkan 2 kolom di SQL Server 2008?

  4. Temukan Semua Baris Dengan Nilai Null di Kolom Apa Pun

  5. Menambahkan persentase ke beberapa hitungan dalam satu SQL SELECT Query