sql >> Databáze >  >> RDS >> Mysql

Filtrování sady výsledků uložené procedury

Existuje několik způsobů, jak to vyřešit. Nejjednodušší by bylo upravit uloženou proceduru tak, abyste mohli přímo filtrovat sadu výsledků, ale předpokládám, že z nějakého důvodu to nemůžete udělat.

Co budete muset udělat, je uložit výsledky uložené procedury do tabulky / dočasné tabulky takto:

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

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

EDIT:Pokud můžete upravit dílčí dotaz:

Starý uložený proces:...SELECT*FROMMyTableWHERECol1 =@param1 ANDCol2 =@param2

Nový uložený proces:

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

ale možná úplně nerozumím tvému ​​uloženému procesu. Dočasná tabulka zde ve skutečnosti není nejvýkonnějším řešením a může být poněkud obtížná, ale pokud vám funguje, jděte s ní, ale mám problém představit si situaci, kdy byste nemohli jen upravit svůj uložený proc na místo dočasné tabulky použijte poddotaz.




  1. Jak vytvořit synonymum v mysql

  2. Úplné obnovení clusteru MySQL nebo MariaDB Galera ze zálohy

  3. Rozdíl ve výkonu v dotazu mezi cmd a workbench mysql

  4. SQL sloupec číslování - MySQL