Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Как из SQL вытащить значение переменной


Автор: -Сергей- 22.8.2005, 05: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?

Автор: LSD 22.8.2005, 09:20
Все переменные объявленные в блоке PL/SQL существовуют только на время его выполнения.
Надо или оформить данный код в виде процедуры или функции, или можно просто выполнить запрос:
Код
select sm.seqclients.nextval from dual

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

P.S. Есть еще извращенный способ использовать отладку smile

Автор: -Сергей- 22.8.2005, 10:26
Спасибо за ответ, я уже и сам догадался.

Автор: Song 23.8.2005, 07:18
Используют обычно хранимую процедуру.

Но в некоторых компонентах есть дополнительные возможности.
Например, в ODAC.
Там, новое значение, например новый id можно получить сразу после выполнения Post. Очень удобно.

Автор: Marriage 28.8.2005, 21:07
В DOA
Код

Query1.GEtVariable('FC_FIELD');

Автор: LSD 28.8.2005, 21:13
Marriage поясни свою мысль, что за переменная FC_FIELD?

Автор: Marriage 30.8.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 - Это имя переменной

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)