Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как из SQL вытащить значение переменной, В Delphi 
:(
    Опции темы
-Сергей-
Дата 22.8.2005, 05:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 2.8.2003
Где: Россия

Репутация: нет
Всего: 1



Создаю 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?
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
LSD
Дата 22.8.2005, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



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

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

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
-Сергей-
Дата 22.8.2005, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 2.8.2003
Где: Россия

Репутация: нет
Всего: 1



Спасибо за ответ, я уже и сам догадался.
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
Song
Дата 23.8.2005, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: нет
Всего: 4



Используют обычно хранимую процедуру.

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


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Marriage
Дата 28.8.2005, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



В DOA
Код

Query1.GEtVariable('FC_FIELD');



--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
LSD
Дата 28.8.2005, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Marriage поясни свою мысль, что за переменная FC_FIELD?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Marriage
Дата 30.8.2005, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Код

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 - Это имя переменной

Это сообщение отредактировал(а) Marriage - 30.8.2005, 10:19


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0897 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.