Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];




Вниз

Передача параметров для 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]

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




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.022 c
1-57734           Sergey Karagodin      2002-04-05 09:21  2002.04.18  
Какое событие


1-57693           esprit_bel            2002-04-01 04:19  2002.04.18  
Про окно


7-57899           Nikolay               2002-01-24 08:37  2002.04.18  
DRV


1-57735           Дмитрий Д.            2002-04-04 10:39  2002.04.18  
Дерево каталогов с возможностью выборки


3-57658           DRIVER                2002-03-29 08:26  2002.04.18  
Работа с БД