Найдено 5 результатов

fc2000
Пт 22 янв 2016 10:27
Форум: Universal Data Access Components
Тема: MySQL: параметры процедур.
Ответы: 8
Просмотры: 8632

Re: MySQL: параметры процедур.

В продолжение темы.
Ни как не могу разобраться со следующим вопросом, при попытке получить через параметр процедуры изображение из базы данных, столкнулся с тем, что файл, который я получаю из BLOB-поля приходит не полностью. Например при размере файла ~19кб процедура возвращает только ~3 кб.

код, с помощью которого я пытаюсь добиться результата:

Код: Выделить всё

 
так
  tmpStream:=Proc.CreateBlobStream(tProc.FieldByName('@PICT'),bmRead);
или так
  tmpString:=FESStProc.FieldByName('@AVATAR').AsWideString;
  tmpStream.Write(PString(tmpString),Length(tmpString));
результат одинаково неудовлетворителен :(
fc2000
Ср 02 дек 2015 13:56
Форум: Universal Data Access Components
Тема: MySQL: параметры процедур.
Ответы: 8
Просмотры: 8632

Re: MySQL: параметры процедур.

Да, действительно, спасибо!
Выходит, что .PrepareSQL в процессе выполнения указывает, что значение нужно вернуть в параметр?
Ибо если я использую .PrepareSQL, то получаю ожидаемое значение параметра.
fc2000
Ср 02 дек 2015 12:03
Форум: Universal Data Access Components
Тема: MySQL: параметры процедур.
Ответы: 8
Просмотры: 8632

Re: MySQL: параметры процедур.

хм. вот незадача. несмотря на то, что попытка выполнения процедуры не вызывает ошибки, в результате выполнения получаю null. Что такого еще делает PrepareSQL кроме генерации SQL и создания параметров, чего не делаю я?
fc2000
Ср 02 дек 2015 09:28
Форум: Universal Data Access Components
Тема: MySQL: параметры процедур.
Ответы: 8
Просмотры: 8632

Re: MySQL: параметры процедур.

Отвечу сам: необходимо самому переписывать SQL приводя к виду:
CALL CHECKID(:IN_PARAM, @OUT_PARAM); SELECT @OUT_PARAM AS '@OUT_PARAM'
fc2000
Вт 01 дек 2015 11:22
Форум: Universal Data Access Components
Тема: MySQL: параметры процедур.
Ответы: 8
Просмотры: 8632

MySQL: параметры процедур.

Здравствуйте!
Столкнулся с такой проблемой: используя следующий код для обращения к процедуре

Код: Выделить всё

 
  UniStoredProc.StoredProcName:='CHECKID';
  UniStoredProc.PrepareSQL;
  UniStoredProc.Params.CreateParam(ftString,'IN_PARAM',ptInput);
  UniStoredProc.Params.CreateParam(ftString,'OUT_PARAM',ptOutput);
  UniStoredProc.Params.ParamByName('IN_PARAM').AsString:='123abc';
  UniStoredProc.ExecProc;
  Result:= UniStoredProc.ParamByName('OUT_PARAM').AsString;
получаю ошибку вида:
Incorrect number of arguments for PROCEDURE bd.CHEKID; expected 2, got 0

Сразу объясню, для чего параметры создаются вручную: настройки безопасности таковы, что у пользователя есть право только на запуск конкретных процедур и нет права на SELECT для mysql.proc и в результате UniStoredProc.PrepareSQL количество параметров равно нулю.

Вопрос: Я что-то делаю не так или с UniDAC это в принципе невозможно? Такая схема работала с FireDAC для WIndows приложений.