簡體   English   中英

使用C ++處理MySQL控制結構

[英]Working with MySQL control structures from C++

我想我以絕對錯誤的方式使用這些MySQL控制結構 (請參見下文)。 問題可能出在MySQL查詢中,但我不確定...

MySQL錯誤:您的SQL語法有錯誤; 檢查對應於你的MySQL服務器版本正確的語法使用附近的手冊“IF @records> 1000,然后選擇@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)結果SELECT @actRecords:=COUNT(id) FROM sys_proc_err WHERE time > (NOW()-259200)為6。

簽出多語句和多查詢,多結果連接選項,以傳遞給mysql_real_connect。

文件在這里http://dev.mysql.com/doc/refman/5.5/en/mysql-options.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM