Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memfilter Kumpulan Hasil Prosedur Tersimpan

Ada beberapa cara untuk menyelesaikan ini. Cara termudah adalah memodifikasi prosedur tersimpan untuk memungkinkan Anda memfilter kumpulan hasil secara langsung, tetapi saya berasumsi karena alasan tertentu Anda tidak dapat melakukan ini.

Yang perlu Anda lakukan adalah menyimpan hasil prosedur tersimpan dalam tabel/tabel temp seperti ini:

DECLARE @tablevar table(col1,..
INSERT INTO @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'

SELECT col1, col2 FROM @tablevar WHERE col1 = 'abc'

EDIT:Jika Anda dapat mengedit subquery:

Proc Tersimpan Lama:...SELECT*FROMMyTableWHERECol1 =@param1 ANDCol2 =@param2

Proc Tersimpan Baru:

....
SELECT
*
FROM
   (SELECT
      *
   FROM
      MyTable
   WHERE
      Col1 = @param1 AND
      Col2 = @param2
   ) a
WHERE
   Col3 = FilterRule1

tapi mungkin saya tidak memahami proc Anda yang tersimpan di sini sepenuhnya. Tabel temp di sini sebenarnya bukan solusi yang paling berkinerja dan bisa sedikit merepotkan, tetapi jika itu berhasil untuk Anda, ikuti saja, tetapi saya mengalami kesulitan membayangkan situasi di mana Anda tidak bisa hanya memodifikasi proc tersimpan Anda menjadi gunakan sub-kueri alih-alih tabel temp.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah kueri ini aman dari injeksi sql?

  2. Errcode 13 , PILIH KE OUTFILE masalah

  3. Mengapa menggunakan IN(...) saat memilih bidang yang diindeks, akan mematikan kinerja kueri SELECT?

  4. SQL SELECT --> file csv

  5. Akankah memindahkan data dari EBS ke penyimpanan sementara akan meningkatkan kinerja kueri MySQL?