Как из SQL вытащить значение переменной

 
0
 
Oracle
ava
-Сергей- | 22.08.2005, 06:54
Создаю SQL запрос подобного вида


with OracleQuery1 do
begin
SQL.Clear;
SQL.Add('declare');
SQL.Add('clID number;');
SQL.Add('begin');
SQL.Add(' select sm.seqclients.nextval into clID from dual;');
SQL.Add('end;');
Execute;
end;

Как узнать значение переменной clID?
Comments (6)
ava
LSD | 22.08.2005, 09:20 #
Все переменные объявленные в блоке PL/SQL существовуют только на время его выполнения.
Надо или оформить данный код в виде процедуры или функции, или можно просто выполнить запрос:
select sm.seqclients.nextval from dual

и получить из курсора требуемое значение.

P.S. Есть еще извращенный способ использовать отладку :hehe
ava
-Сергей- | 22.08.2005, 10:26 #
Спасибо за ответ, я уже и сам догадался.
ava
Song | 23.08.2005, 07:18 #
Используют обычно хранимую процедуру.

Но в некоторых компонентах есть дополнительные возможности.
Например, в ODAC.
Там, новое значение, например новый id можно получить сразу после выполнения Post. Очень удобно.
ava
Marriage | 28.08.2005, 21:07 #
В DOA

Query1.GEtVariable('FC_FIELD');
ava
LSD | 28.08.2005, 21:13 #
Marriage поясни свою мысль, что за переменная FC_FIELD?
ava
Marriage | 30.08.2005, 10:18 #

procedure TForm1.Button1Click(Sender: TObject);
var
q:TOracleQuery;
pFK_ID:integer;
begin
q:=TOracleQuery.Create(Self);
q.Session:=OS;
q.Cursor:=11;
q.SQL.Text:='INsert into TTable(FC_FAM) values (''123'') returning fk_id into :pFK_ID ';
q.DeclareVariable('pFK_ID',otInteger);
q.Execute;
pFK_ID:=q.GetVariable('pFK_ID');
ShowMessage(INttoStr(pFK_ID));
q.Free;
end;


FC_FIELD - Это имя переменной
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit