Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.18;
Скачать: CL | DM;

Вниз

Передача параметров для Select в хранимую процедуру   Найти похожие ветки 

 
Daiz13 ©   (2002-03-26 15:58) [0]

Ниже приведена хранимая процедура, никак не могу разобраться как в нее можно передать условия для Select.
Условия передаються через AWHERE_COND, для примера это может быть "(sernum="32" or sernum="38" or sernum="39" ) AND (daytime>="01.01.2002" AND daytime<="27.11.2002")"


CREATE PROCEDURE GET_MEASURES_SUMMARY (AWHERE_COND VARCHAR)
RETURNS (
sum_energy NUMERIC(15, 3),
sum_volume NUMERIC(15, 3)
)
AS
BEGIN
SELECT
(a.TOTALENERGY - b.TOTALENERGY),
(a.TOTALVOLUME - b.TOTALVOLUME)
FROM MEASURES a, measures b
WHERE
a.id=(select min(id) from measures WHERE :AWHERE_COND)
and
b.id=(select max(id) from measures WHERE :AWHERE_COND)
INTO :sum_energy, :sum_volume;
END


 
Johnmen ©   (2002-03-26 16:05) [1]

...WHERE :AWHERE_COND...
Фактически ты подразумеваешь не параметр, а макроподстановку,
а это дело отсутствует в синтаксисе БД.

Так, что придется -
...WHERE (F1=:F1) AND (F2=:F2)...и т.д.



 
Daiz13 ©   (2002-03-26 16:07) [2]

Тогда от такого подхода мне придеться отказаться - количество параметров и формат условия заранее неизвестны


 
OlegE ©   (2002-03-26 16:21) [3]

FIBPlus - это позволяют!

While working with TpFIBDataSet and TpFIBQuery it is also possible to use in the query macroses of the following types:
@MACROS_NAME[%][#]


@ - a sign of the beginning of the macros
% - an optional beginning of the default value of the macros
# - an optional sign that it it necessary to write the value of the macros
in inverted commas.

Using macroses you can dynamically change names of tables and fields in a query, conditions, etc.
To get access to values of macroses use ParamByName. ParamNameCount helps to get the total number of macroses in a query.

The example of using of macroses:

select * from @TT%TABLE1 where @F%FIELD1=@VAL%#John

The default form of the query before sending off to the server is

select * from TABLE1 where FIELD1="John"


 
DiggerAbstract   (2002-03-26 16:22) [4]

создавай динамический SQL запрос


 
Daiz13 ©   (2002-03-26 16:28) [5]

Задача, на самом деле, посложнее и одним запросом мне не обойтись. Хотелось из всех для удобства соединить в хранимой процедуре, да видно не судьба...


 
Johnmen ©   (2002-03-26 16:31) [6]

>OlegE © : Все верно, но это на уровне приложения, что можно было делать и в RxQuery.


 
OlegE ©   (2002-03-26 16:32) [7]

Еще раз повторяю FIBPlus позволяет передавать такие параметры!


 
Johnmen ©   (2002-03-26 16:34) [8]

>OlegE © : А кто же их корректно примет ???????


 
Daiz13 ©   (2002-03-26 16:36) [9]

>OlegE
Нскольно я понимаю, так можно переавать переменные, а мне нужно в виде переменной весь запрос передать.


 
OlegE ©   (2002-03-26 16:48) [10]

Я это и имею в виду:
Using macroses you can dynamically change names of tables and fields in a query, conditions, etc.


 
Daiz13 ©   (2002-03-26 16:58) [11]

Запрос1:
(sernum="32" or sernum="38" or sernum="39" ) AND (daytime>="01.01.2002" AND daytime<="27.11.2002")

Запрос2:
(sernum="32")

Запрос3:
1

Формат запроса и количество параметров заранее неизвестны, ди и не стану я всю прогу под FIBPlus переделывать только из-за этого.


 
Johnmen ©   (2002-03-26 17:04) [12]

>Daiz13 © : Тем более, что контретно твою проблему в данной постановке это не решит !


 
OlegE ©   (2002-03-26 17:17) [13]

>Daiz13
"Формат запроса и количество параметров заранее неизвестны,"
это как раз тот случай!

"ди и не стану я всю прогу под FIBPlus переделывать только из-за этого."
Ты спросил совет, я тебе его дал, а воспользуешься или нет - твое дело.


 
Daiz13 ©   (2002-03-26 17:22) [14]

Ладно, спасибо всем.
Мы пойдем иным путем...



Страницы: 1 вся ветка

Текущий архив: 2002.04.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
3-57609
KaPaT
2002-03-24 22:32
2002.04.18
Объясните такую штуку, пожалуйста


3-57624
cyber
2002-03-27 20:16
2002.04.18
Повторное добавление в Blob-поле - ошибка. Странно.


3-57592
Morgan
2002-03-26 15:52
2002.04.18
Индексация Парадокс 7.0


4-57926
Ura!
2001-12-21 17:48
2002.04.18
ReadEventLog


3-57654
Orlangur
2002-03-29 02:38
2002.04.18
Нюансы транзакций