Mysql
 sql >> база данни >  >> RDS >> Mysql

Филтриране на набора от резултати на съхранена процедура

Има няколко начина да решите това. Най-лесно би било да модифицирате съхранената процедура, за да ви позволи да филтрирате директно набора от резултати, но предполагам, че по някаква причина не можете да направите това.

Това, което ще трябва да направите, е да съхраните резултатите от съхранената процедура в таблица/временна таблица по следния начин:

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

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

РЕДАКТИРАНЕ:Ако можете да редактирате подзаявката:

Стара съхранена процедура:...SELECT*FROMMyTableWHERECol1 =@param1 ANDCol2 =@param2

Нова съхранена процедура:

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

но може би не разбирам напълно съхранената ви процедура тук. Временната таблица тук всъщност не е най-ефективното решение и може да бъде донякъде неприятно, но ако работи за вас, продължете с нея, но имам проблем да си представя ситуация, в която не можете просто да промените съхранения си процес, за да използвайте подзаявка вместо временна таблица.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да се справим с частични дати (2010-00-00) от MySQL в Django?

  2. Lightswitch не позволява добавяне или промяна на записи в MySQL

  3. Защо MySQL не използва оптимални индекси

  4. Обработва се изключение за достъп до обработчика на изключения в MySQL

  5. Хибернация Soft Delete с помощта на каскадна актуализация