Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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]

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



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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
3-57610
Deirdra
2002-03-27 15:19
2002.04.18
DBGrid&Lookup


3-57584
Roman_tutov@mail.ru
2002-03-22 18:57
2002.04.18
Delphi & postgress


1-57811
Sergn
2002-04-06 19:34
2002.04.18
Фоновый рисунок в компоненте TCustomMemo.


1-57763
Stexen
2002-04-04 22:11
2002.04.18
TStream!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1


14-57888
ПАМАХИ МНЕ!
2002-03-08 21:14
2002.04.18
ПОМОГИТЕ, УВАЖАЕМЫЕ МАСТЕРА!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский