Работа со структурами управления MySQL из C ++ - PullRequest
1 голос
/ 19 ноября 2011

Полагаю, что я работаю с этими структурами управления MySQL (см. Ниже) абсолютно неверным образом.Возможно, проблема в запросе MySQL, но я не уверен ...

Ошибка MySQL: у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'IF @records> 1000 THEN SELECT @actRecords: = COUNT (id) FROM sys_proc_err WHERE' в строке 1

#include <mysql.h>
// other includes, declarations for mysql... etc.

int main() {
  mysql_init(&mysql);
  mysql_real_connect(&mysql,DB_SERVER,DB_USER,DB_PASSWORD,DB_DB_IN,0,0,CLIENT_MULTI_STATEMENTS);

  // Now: DELETE ERROR RECORDS older than 3 days if there is more than 1 000 records, leave 1 000 newest records
  mysql_query(connection, "SELECT @records:=COUNT(`id`) FROM `sys_proc_err`;
    IF @records > 1000 THEN SELECT @actRecords:=COUNT(`id`) FROM `sys_proc_err` WHERE time > (NOW()-259200);
    END IF;
    IF @actRecords > 1000 THEN DELETE FROM `sys_proc_err` WHERE `time` < (NOW()-259200);
    ELSE DELETE FROM `sys_proc_err` ORDER BY `id` ASC LIMIT @actRecords-1,@records-@actRecords;
    END IF;");

  return 0;
}

Результат для SELECT @records:=COUNT(id) FROM sys_proc_err равен 1267.

Результат для SELECT @actRecords:=COUNT(id) FROM sys_proc_err WHERE time > (NOW()-259200) равен 6.

1 Ответ

1 голос
/ 19 ноября 2011

Оформление нескольких операторов и нескольких запросов, параметры подключения с несколькими результатами для передачи в mysql_real_connect.

Документы здесь http://dev.mysql.com/doc/refman/5.5/en/mysql-options.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...