Я немного озадачен лучшим способом построения хранимой процедуры, которая возвращает инструкцию SELECT на основе значений строки таблицы в другой таблице.
Проблема может быть лучше всего описана следующим образом:
Table Name: reportValues
--------------------------------------------
ID name date region
--------------------------------------------
1 Stefan 2010-01-01 UK
2 David 2010-01-05 SE
3 Anna 2010-01-12 NO
4 Marie 2010-01-15 NO
Table Name: reportParameters
-------------------------------
ID column queryValue
-------------------------------
1 ID
2 name
3 date
4 region
Основываясь на том, что пользователь вводит в столбец queryValue
в таблице reportParameters
, я хочу создать хранимую процедуру, которая выполняет инструкцию SELECT, например:
SELECT * FROM reportValues WHERE region = 'NO'
Если пользователь ввел следующие значения:
Table Name: reportParameters
-------------------------------
ID column queryValue
-------------------------------
1 ID
2 name
3 date
4 region NO
Но это может быть и так:
SELECT * FROM reportValues WHERE region = 'NO' AND name = 'Anna'
Если пользователь ввел:
Table Name: reportParameters
-------------------------------
ID column queryValue
-------------------------------
1 ID
2 name Anna
3 date
4 region NO
Моя первоначальная мысль сделать это состояла в том, чтобы создать цикл, который конструирует инструкцию SELECT в строковую переменную и выполняет ее. Но это должно быть более элегантное решение?