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

Вниз

Как получить перечень параметров из запроса на PL SQL?   Найти похожие ветки 

 
serg128   (2004-07-02 14:06) [0]

Т.е. есть запрос типа:
 select * from tab where id = :par1
Теперь, если я его разбираю при помощи OracleQuery (пакет DOA):
 OracleQuery->Describe();
 for(int i=0; i< OracleQuery->FieldCount(); i++)
   FieldList->Add(OracleQuery->FieldName(i));

 for(int i=0; i<OracleQuery->Variables->Count(); i++)
   FieldList->Add(OracleQuery->Variables->List->Items[i]);

то он мне возвращает набор полей, а параметры не возвращает.
Как мне можно вернуть параметры? (запрос динамический, т.е. кол-во и имена параметров предусмотреть невозможно).


 
Vlad ©   (2004-07-02 14:11) [1]

Variables - это не параметры, а Bind переменные, которые подставляются в параметр. Соответственно их нужно сначала объявить, потом инициализировать.
Методы DeclareVariable и SetVariable
Если же тебя интересует именно список параметров, то только парсинг текста тебе поможет.


 
Reindeer Moss Eater ©   (2004-07-02 14:42) [2]

К PL/SQL вопрос не имеет никакого отношения.
А что, в DOA у OracleQuery нет свойства Params?


 
Vlad ©   (2004-07-02 15:01) [3]


> Reindeer Moss Eater ©   (02.07.04 14:42) [2]


> А что, в DOA у OracleQuery нет свойства Params?

Нету. Там есть Variables: TVariables. Обявление и инициализация происходит методами, к-рые я указал выше, либо в IDE Variables Editor"е


 
Reindeer Moss Eater ©   (2004-07-02 15:03) [4]

Это переменные PL/SQL блока или какие переменные?
Или это просто фирменный термин для параметров в параметрических SQL запросах?


 
Reindeer Moss Eater ©   (2004-07-02 15:07) [5]

Если же тебя интересует именно список параметров, то только парсинг текста тебе поможет.

Вау. Как же хорошо, что мы выбрали именно ODAC.
Я представляю себе кошмар при парсинге чего-то вроде этого:

select to_char(date_field,"dd.mm.yyyy HH24:MI") as where some_field = :some_value


 
Vlad ©   (2004-07-02 15:12) [6]


> Reindeer Moss Eater ©   (02.07.04 15:03) [4]


> Это переменные PL/SQL блока или какие переменные?

Это то, что в Оракле называется Bind Variables


> Я представляю себе кошмар при парсинге чего-то вроде этого:

Фактически, необходимости парсинга возникать не должно.
Думаю, что это какие-то исключительные ситуации, ведь даже если SQL формируешь динамически, то в процессе знаешь какие переменные и куда ты там подставляешь.


 
Reindeer Moss Eater ©   (2004-07-02 15:15) [7]

ведь даже если SQL формируешь динамически, то в процессе знаешь какие переменные и куда ты там подставляешь.

Ну не скажи.
"Динамически" может означать справочник запросов в которую Вася Пупкин (пользователь программы, а не её создатель) пишет свои запросы.


 
Vlad ©   (2004-07-02 15:33) [8]


> Reindeer Moss Eater ©   (02.07.04 15:15) [7]

в DOA-шном Variables Editor"е есть такая кнопка "Scan SQL", по этой кнопке он парсит текст и выдает тебе список переменных, остается только вручную им тип проставить.
Это я к тому говорю, что парсит же как-то и не валится на твоем примере. Значит и мы можем распарсить.


 
serg128   (2004-07-02 16:23) [9]

А как этот scanSQL вызвать никто не знает?


 
Reindeer Moss Eater ©   (2004-07-02 16:29) [10]

Возможно он вообще реализован в DesignTime пакете.
Так что боюсь что никак.


 
Petr V.Abramov   (2004-07-02 17:39) [11]

FindVariables d юните Oracle

> Я представляю себе кошмар при парсинге
 52 строчки


 
Курдль   (2004-07-03 01:24) [12]

В DOA есть такая фишка - OracleDataSet.DeclareQueryVariables(OracleQuery);
и
OracleDataSet.SetQueryVariables(OracleQuery);

В результате все переменные объявляются и устанавливаются в соответствии с полями набора данных OracleDataSet.
НО! При этом в предложении OracleQuery.SQL.Text все переменные должны иметь место (типа ...:VAR_NAME);
Думаю, что если после этого пройтись циклом


for i := 0 to OracleQuery.Variables.Count - 1 do
begin
  ...
end;


то все получится (самому лень, но результат интересен) :)


 
Курдль ©   (2004-07-05 15:15) [13]


> serg128

Где отчет? Интересно же! :)



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

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

Наверх




Память: 0.5 MB
Время: 0.023 c
4-1086624324
killer
2004-06-07 20:05
2004.08.01
Браузер установленный по умолчанию


14-1089280477
Layner
2004-07-08 13:54
2004.08.01
Грузия - Осетия...


14-1089977904
Prohodil Mimo
2004-07-16 15:38
2004.08.01
Просто мнение об отвлечённых темах.


3-1089310113
MadGhost
2004-07-08 22:08
2004.08.01
Помогите с синтаксисом SQL пожалуйста!!!


4-1087542808
ilnarab
2004-06-18 11:13
2004.08.01
Параметры FindFirstFile