![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SELECT после INSERT [D7]
Ильичев С.А. © (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