Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SELECT после INSERT [D7]


Страницы:   1 2 3

Ильичев С.А. ©   (2006-04-27 11:07:00) 

Как из TADOQuery выполнить подобный скриптик ?

 INSERT INTO TZones (ID, Name, Description) VALUES ((SELECT NewZoneNum FROM dual), 'qwe', NULL);
 SELECT MAX(ID) FROM Tzones;


Ругается - Invalid character


Sergey13   (2006-04-28 14:46:00) [21]

2[24] Ильичев С.А. ©   (28.04.06 14:33)
К запросам типа Insert, Update, Delete метод Open не применим. Для них есть ExecSQL или нечто похожее. Open только для Select.


Ильичев С.А.   (2006-04-28 14:33:00) [22]

Да.
Если поставить в конце ; говорит инвалид чарактер
Если заключть в BEGIN ... END  говорит инвалид SQL стейтмент


Sergey13   (2006-04-28 13:43:00) [23]

2[22] Ильичев С.А. ©   (28.04.06 13:40)
> q. Open;
На Insert?


Ильичев С.А.   (2006-04-28 13:40:00) [24]

Так.
В PL/SQL Developer работает.
В делфе на Openругается ORA-00933. SQL command not properly ended
Делаю :


       else begin

         Q.Parameters.CreateParameter('ID_', ftInteger, pdOutput, SizeOf(Integer), -1);
         Q.SQL.Text :=
         'INSERT INTO TZones (ID, Name, Description) VALUES (NewZoneNum, NULL, NULL) RETURNING ID INTO :ID_';
       end;
       try
         q.Open;


Sergey13   (2006-04-28 09:44:00) [25]

2[20] Ильичев С.А. ©   (28.04.06 09:22)
>Есть такая софтина PL/SQL Developer.
>Пишу
Где пишешь? В окне SQL Window или Test Window? Во втором можно объявить переменную (на нижнем гриде переменных правой кнопкой и Scan Variables, подправить тип) и посмотреть ее значение.


Ильичев С.А.   (2006-04-28 09:22:00) [26]

2 Sergey13 ©   (28.04.06 09:13) [19]

Очень желательно второе.
Если нет, то мона и первое. Но я не знаю как.
Есть такая софтина PL/SQL Developer.
Пишу
INSERT INTO TZones (ID, Name, Description) VALUES (NewZoneNum, 'qwe', NULL) RETURNING ID INTO :ID;

:ID - это получаетя некая переменная. Как её объявить.
Иль забиндить надо он говорит.
Как?


Sergey13   (2006-04-28 09:13:00) [27]

2[18] Ильичев С.А. ©   (27.04.06 19:08)
Тебе вообще что надо? Вернуть новый ИД? Или тебе надо обязательно вернуть рекордсет с одним полем в одной записи со значением вставленного ИД? Тебе не кажется, что это те-же яйца, но вид с боку?


Ильичев С.А.   (2006-04-27 19:08:00) [28]

>> с каких пор агрегаты возвращают рекордсеты?

Сколько себя помню.


Val   (2006-04-27 18:40:00) [29]

>[15] Ильичев С.А. ©   (27.04.06 18:17)
с каких пор агрегаты возвращают рекордсеты?


Vlad   (2006-04-27 18:17:00) [30]


> Ильичев С.А. ©   (27.04.06 11:07)  


вобще такие выражения в Оракле пишутся

begin
<скрипт>
end

Не знаю, проглотит ли ADO такое


Ильичев С.А.   (2006-04-27 18:17:00) [31]

2 ANB ©   (27.04.06 17:54) [13]

оно может все так, но видители ли не я ставлю условия на чем
писать, какие компоненты использовать и какую СУБД...

Партия сказала "надо" - комсомол ответил "есть".

Опишите пожалуйста приемлемую схему.
Если ясно чего мне надо.

и что есть "сивенс" ?

2 Sergey13 ©   (27.04.06 16:57) [12]
Самый обычный РекордСет я получаю


Val   (2006-04-27 18:00:00) [32]

1. Оракл не умеет выполнять скрипты.
фи на вас:)


ANB   (2006-04-27 17:54:00) [33]


>  SELECT MAX(ID) FROM Tzones;

1. Оракл не умеет выполнять скрипты. Все компоненты, которые умеют это делать - сами пилят их на куски
2. За SELECT MAX(ID) FROM Tzones; в оракле нужно отрывать руки
3. Никто не мешает тебе сначала получить ID из сивенса, а потом вставлять его в таблицу. Автоинкрементальных полей у оракла нету.
4. Если уж написал триггер для генерации ID-шников, то не знать про параметры стыдно.
5. Совет - оракл + ADO - не лучшая связка. Поищи компоненты прямого доступа. Но выходные параметры поддерживает и ADO.


Sergey13   (2006-04-27 16:57:00) [34]

2[11] Ильичев С.А. ©   (27.04.06 16:48)
>Так мне надо рекордсет
Это какой же рекордсет ты получаешь запросом
SELECT MAX(ID) FROM Tzones;
?

>скажите пожалуйста что такое :1 и как с ним работать
Это переменная


Ильичев С.А.   (2006-04-27 16:48:00) [35]

Так мне надо рекордсет

Вот смотрю в хелпе прмер

DELETE FROM emp
 WHERE job = 'SALESMAN' AND COMM < 100
RETURNING sal INTO :1;

скажите пожалуйста что такое :1 и как с ним работать


Sergey13   (2006-04-27 16:22:00) [36]

2 [9] Ильичев С.А. ©   (27.04.06 16:18)
>это даст мне РекордСет на выходе ?
Почему? После выполнения запроса из переменной :ID можно будет прочитать значение вставленного ID. Попробовать то трудно что-ли?


Ильичев С.А.   (2006-04-27 16:18:00) [37]

2 Sergey13 ©   (27.04.06 11:32) [8]

это даст мне РекордСет на выходе ?


Sergey13   (2006-04-27 11:32:00) [38]

2[6] Ильичев С.А. ©   (27.04.06 11:28)
Ну дык объяви переменную! Кто мешает то?


Ильичев С.А.   (2006-04-27 11:29:00) [39]

2 Johnmen ©   (27.04.06 11:26) [5]

не переводите тему пожалуйста
смущает, но вопрос остаётся актуальным


Ильичев С.А.   (2006-04-27 11:28:00) [40]

2 Sergey13 ©   (27.04.06 11:18) [3]

not all variables bound


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо