CREATE PROCEDURE `xdbregclient`(p_idapp CHAR(10), p_ws VARCHAR(40), p_vers CHAR(10), OUT o_idsession INTEGER(11), OUT o_groups TEXT, OUT o_userinfo VARCHAR(40))
...
В Лазаре (0.9.20) имеется: TMySQL50Connection и TSQLQuery. Параметры задаются процедурно:
- Код: Выделить всё
qrySession.Params.CreateParam(ftstring, 'p_idapp', ptinput);
qrySession.Params.CreateParam(ftstring, 'p_ws', ptinput);
qrySession.Params.CreateParam(ftstring, 'p_vers', ptinput);
qrySession.Params.CreateParam(ftinteger, 'o_idsession', ptoutput);
qrySession.Params.CreateParam(ftstring, 'o_groups', ptoutput);
qrySession.Params.CreateParam(ftstring, 'o_userinfo', ptoutput);
//... тут присваиваются значения входящих, потом:
qrySession.SQL.Add('call xdbregclient(:p_idapp,:p_ws,:p_vers,:o_idsession,:o_groups,:o_userinfo)');
qrysession.Prepare;
try
qrySession.execsql;
...
и вот результат:
Error executing query: OUT or INOUT argument 4 for routine xdb.xdbregclient is not a variable
дело, как видно, не именно в "аргументе 4", а вообще в самом первом возвращаемом параметре. что-то я не так делаю? заранее инициализировать возвращаемые значения уже пробовал, также менял типы, перепроверял имена... может синтаксис CALL в перечислении возвращаемых параметров какой-то другой? и что значит "не является переменной?" т.е. является константой или чем еще?