Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с хранимой процедурой, второй вызов не дает результата 
:(
    Опции темы
dvamaster
Дата 17.4.2009, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 30.6.2004
Где: Россия : Курган

Репутация: 3
Всего: 10



Delphi 2009 + MySQL API 5

Первый вызов хранимой процедуры возвращает результат, второй нет.
Если использовать просто SELECT ... FROM ... то результат будет получен в любом случае.

Инициализация:
Код

function ConnectDB(AHost, AUser, APass, ADB: PChar; APort: UINT): BOOL;
var
  h, u, p, d: array [0..255] of AnsiChar;
  t: Integer;
begin
  WideCharToMultiByte(CP_ACP, 0, AHost, -1, @h, 256, nil, nil);
  WideCharToMultiByte(CP_ACP, 0, AUser, -1, @u, 256, nil, nil);
  WideCharToMultiByte(CP_ACP, 0, APass, -1, @p, 256, nil, nil);
  WideCharToMultiByte(CP_ACP, 0, ADB, -1, @d, 256, nil, nil);
  Result := false;
  conn := mysql_init(nil);
  if conn = nil then
    Exit;
  t := 5;
  if mysql_options(conn, MYSQL_OPT_CONNECT_TIMEOUT, @t) <> 0 then
    begin
      DisconnectDB;
      Exit
    end;
  if mysql_real_connect(conn, @h, @u, @p, @d, APort, nil, CLIENT_COMPRESS or
    CLIENT_MULTI_STATEMENTS or CLIENT_MULTI_RESULTS) <> conn then
    begin
      DisconnectDB;
      Exit
    end;
  if mysql_query(conn, 'CALL `init_connection`;') <> 0 then
    begin
      DisconnectDB;
      Exit
    end;
  Result := true
end;


Функция заполнения списка:
Код

function GetRefAbbrList(AProc: TGetRefAbbrListProc): BOOL;
var
  r: PMYSQL_RES;
  d: PMYSQL_ROW;
  i: Integer;
  a, n: array [0..255] of Char;
begin
  Result := false;
  if mysql_query(conn, 'CALL `get_ref_abbr_list`;'{'SELECT `id`, `abbr`, `name` FROM `abbrs` ORDER BY `abbr`'}) <> 0 then
    Exit;
  r := mysql_store_result(conn);
  if r = nil then
    Exit;
  d := mysql_fetch_row(r);
  while d <> nil do
    begin
      i := StrToIntA(d^[0]);
      MultiByteToWideChar(CP_ACP, 0, d^[1], -1, @a, 256);
      MultiByteToWideChar(CP_ACP, 0, d^[2], -1, @n, 256);
      AProc(i, a, n);
      d := mysql_fetch_row(r)
    end;
  mysql_free_result(r);
  Result := true
end;


Как быть? Хранимые процедуры нужны в любом случае, т.к. может быть изменена структура базы. В клиенте меньше изменений делать тогда надо будет.

Добавлено через 4 минуты и 34 секунды
Процедура инициализации:
Код

  SET NAMES "cp1251";
  SET collation_connection = "cp1251_general_ci";
  SET collation_server = "cp1251_general_ci";
  SET character_set_client = "cp1251";
  SET character_set_connection="cp1251";
  SET character_set_results="cp1251";
  SET character_set_server="cp1251";



--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
dvamaster
Дата 17.4.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 30.6.2004
Где: Россия : Курган

Репутация: 3
Всего: 10



Выяснилось:

mysql_query выдает ошибку при втором и т.д. вызове

Код

Commands out of sync; you can`t run this command now



--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0371 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.