powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / MySQL как получить identity (auto_increment)
6 сообщений из 6, страница 1 из 1
MySQL как получить identity (auto_increment)
    #38874549
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

Пришлось писать приложение на PB (10.5) для MySQL (5.6) ..
и столкнулся с неожиданной проблемой - не могу получить значение @@identity
после insert-a ... без использования Datawindow.
Пытался через dynamic sql (prepare from sqlsa ... execute immediate ..)
Сделал проц-ру ... чтото вроде :
create procedure usp_add_media(
in aobject_title varchar(255),
out aobject_id int
)
begin
insert into media(object_title)
values (aobject_title);
set aobject_id = last_insert_id();
end;

В PB описал ее как local external functions
subroutine usp_add_media(string pmedia_title, ref int pmedia_id) RPCFUNC ALIAS FOR "usp_add_media"

вызываю SQLCA.usp_add_media("fgdjhfdsf", li_id)
получаю 0!!!

где я не прав??
...
Рейтинг: 0 / 0
MySQL как получить identity (auto_increment)
    #38874790
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Drive_Пришлось писать приложение на PB (10.5) для MySQL (5.6) ..
и столкнулся с неожиданной проблемой - не могу получить значение @@identity
после insert-a ...
А типа как в SA
Код: sql
1.
select @@identity into :id from dummy ;


не канает?

_Drive_subroutine usp_add_media(string pmedia_title, ref int pmedia_id) RPCFUNC ALIAS FOR "usp_add_media"
вызываю SQLCA.usp_add_media("fgdjhfdsf", li_id)
получаю 0!!!
А какой у Мускуля int ? Для SA нужно однозначно так:

subroutine usp_add_media(string pmedia_title, ref long pmedia_id) RPCFUNC ALIAS FOR "usp_add_media"
...
Рейтинг: 0 / 0
MySQL как получить identity (auto_increment)
    #38874810
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня смущает использование last_insert_id() внутри процедуры
Зачем?
Используйте @@identity
Кроме того есть небольшой глюк - если нет никакого return внутри процедуры или select, билдер некорректно отрабатывает.
Ну и еще вопрос или совет, что вам мешает использовать dw или ds внутри функции?
Так проще получить стабильный возврат
...
Рейтинг: 0 / 0
MySQL как получить identity (auto_increment)
    #38874929
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

испробовал ВСЕ что знал ... ничего не получается :-(
Создал Datawindow в Update Propertys описал unique key column и ее-же как identity column
Внутри среды делаю insert ... заполняю некоторые колонки ... делаю update - в поле которое identity
НИЧЕГО НЕ ПОЯВЛЯЕТСЯ ... делаю retrieve - все ОК ... все на месте ...
PB 10.5.2 build 7858
Сервер MySQL 5.6
MySQL ODBC 5.3 ANSI и UNICODE тоже пробовал

впал в ступор ... как-же так я же ВСЕ указал!
PS:
скрип для создания таблицы:
create table Object
(
object_id int not null auto_increment,
ot_id int not null,
tl_id int,
object_title varchar(255),
object_begin date,
object_end date,
primary key (object_id)
);
...
Рейтинг: 0 / 0
MySQL как получить identity (auto_increment)
    #38874943
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spas2001,

C select @@identity я начал ... выяснил что from dummy не работает....
тогда стал писать процедуры .. в которой делал select @@identity into
потом поменял select на set outparam = @@identity
потом поменял на set outparam = last_insert_id()
Что интересно если вызывать в MySQL Workbench эту проц. типа вот так
set @p_id= 0
call usp_add_object('blabla',@p_id);
select @p_id;
то все ОК!
...
Рейтинг: 0 / 0
MySQL как получить identity (auto_increment)
    #38874974
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Drive_,
Нашел!! на http://forums.mysql.com/read.php?37,139326,223231,quote=1

Надо править PBODB105.ini

добавить секцию ...
[MySQL]
PBSyntax='MySQL_SYNTAX'

to the Syntax Section:
[MySQL_SYNTAX]
GetIdentity='Select @@identity'

После этого Datawindow identity column - ЗАРАБОТАЛО!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / MySQL как получить identity (auto_increment)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]