Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Filtrowanie zbioru wyników procedury zapisanej

Jest kilka sposobów na rozwiązanie tego problemu. Najłatwiej byłoby zmodyfikować procedurę składowaną, aby umożliwić bezpośrednie filtrowanie zestawu wyników, ale zakładam, że z jakiegoś powodu nie możesz tego zrobić.

Musisz wtedy przechowywać wyniki procedury składowanej w tabeli/tabeli tymczasowej, tak jak poniżej:

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

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

EDYTUJ:Jeśli możesz edytować podzapytanie:

Stara przechowywana procedura:...SELECT*FROMMojaTabelaWHERECol1 =@parametr1 ANDCol2 =@parametr2

Nowa przechowywana procedura:

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

ale może nie rozumiem całkowicie twojego zapisanego procesu tutaj. Tabela tymczasowa tutaj nie jest tak naprawdę najbardziej wydajnym rozwiązaniem i może być trochę kłopotliwa, ale jeśli działa, to idź z nią, ale mam problem z wyobrażeniem sobie sytuacji, w której nie można po prostu zmodyfikować zapisanego procesu, aby użyj podzapytania zamiast tabeli tymczasowej.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z widoków MySQL

  2. Przenieś węzeł w drzewie zestawów zagnieżdżonych

  3. Wybierz rodziców i dzieci z MySQL

  4. Spring JDBC przy użyciu pliku application.properties

  5. Grupuj według kombinacji 2 pól, a następnie uporządkuj według sumy każdej grupy, wiele adnotacji django