Код: Выделить всё
Insert Into [TableName](...) Values(...);
Select GetLastID;
Модератор: Модераторы
Код: Выделить всё
Insert Into [TableName](...) Values(...);
Select GetLastID;
Я использую IBX. Не знаю, мне больше нравится дельфийский подход. У IBQuery есть ExecSQL. Кроме того, есть возможность на более низком уровне без компонент сделать все что угодно - без сторонних компонент и бесплатно для всех сторон.S_Gur писал(а):без использования сторонних компонент, тем более платных и дорогостоящих
Может быть, и не нужно. Вот только 2 последовательных запроса выполняются каждый в своей сессии. В лучшем случае, я могу получить не то значение идентификатора. Кроме того, я взял самый примитивный случай. В идеале мне надо выполнить хранимую процедуру и получит выходные параметры. Что-то типа:MaratIsk писал(а):SQL-скрипт - просто набор команд. Что мешает их выполнить из приложения последовательно и сделать, например, SELECT в завершение ?! нужно ли быть для этого семи пяди по лбу ?!
Код: Выделить всё
Call `prTest`(@v1, @v2, @v3, @v4);
Select @v1, @v2, Cast(@v3 As DateTime), @v4;Код: Выделить всё
INSERT INTO TRISKS (NAME) VALUES (:pNAME) RETURNING ID;Для этого есть транзакции и их подтверждение. Будет изолированная область обрабатываться.S_Gur писал(а):Может быть, и не нужно. Вот только 2 последовательных запроса выполняются каждый в своей сессии. В лучшем случае, я могу получить не то значение идентификатора. Кроме того, я взял самый примитивный случай. В идеале мне надо выполнить хранимую процедуру и получит выходные параметры. Что-то типа:
К сожалению, не пойдет. Пример с инсертом - это просто примитивный пример для скрипта, содержащего две команды. В нашем проекте около полутора сотен хранимых процедур. В общем случае, мои запросы выглядят примерно так:Sharfik писал(а):А так не пойдет?Код: Выделить всё
INSERT INTO TRISKS (NAME) VALUES (:pNAME) RETURNING ID;
Код: Выделить всё
Set @v1 = 5; Set @v2 = 'qwern'; Set @v3 = False; Call `prProc`(@v1, @v2, @v3, @vResult); Select @vResult;
Код: Выделить всё
Select @v4, @v5, @v6, @vResultЯ не знаю, о каких скриптовых компонентах вы говорите. Я использую обычный TQuery. В последние несколько лет TUniQuery из библиотеки UniDAC. Так что, вы можете догадываться о чем угодно, но у меня все прекрасно работаетMaratIsk писал(а):у скриптовых компонентов нет буфера для хранения набора данных. не знаю, что вы программировали 30 лет, но многие вещи для вас, как я догадываюсь, внове. особенно, ваши эксперименты с connections
вы уж определитесь с чем работаетеS_Gur писал(а): Хотел для этого воспользоваться стандартными средствами Лазаруса, без сторонних компонент. Но выяснил, что TSQLQuery в принципе не понимает скрипты из нескольких команд. Понимает TSQLScript, но навскидку я не нашел у него других методов, кроме ExecSQL
Топикстартер внятно сказал, что его не устраивает. А некоторые читают явно не головой.MaratIsk писал(а):вы уж определитесь с чем работаете
с бодуна что ли ?! цитату видел?Снег Север писал(а):Топикстартер внятно сказал, что его не устраивает. А некоторые читают явно не головой.MaratIsk писал(а):вы уж определитесь с чем работаете
Снег Север писал(а):А некоторые читают явно не головой.