//连接数据库
mysql_real_connect(&m_mysql, m_host, m_user, m_passwd, m_db, 0, "", CLIENT_MULTI_STATEMENTS)
//准备创建存储过程的语句
char sqlState[2048] = {0};
sprintf(chSql, "DELIMITER //\nDROP PROCEDURE IF EXISTS p_insertrankrp //\nCREATE PROCEDURE p_insertrankrp() \
\nBEGIN \nSTART TRANSACTION; \
\ndelete from %s where time >=%d and time <= %d;\
\ncommit;\
\nend // \
\nDELIMITER ; ","teast", 12345, 123667);
//执行SQL语句
mysql_real_query(&m_mysql, sqlState, strlen(sqlState)); //执行查询
//错误信息:
1064, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER //
DROP PROCEDURE IF EXISTS `onesec`.`p_insertrankrp` //
CREATE PROCE' at line 1
//onesec是我的数据库名
问题:
以上语句在SQLyog中是正确的。
我的数据库是5.1的。
这是为什么???
------解决方案--------------------------------------------------------
你将chSql的值显示出来看看
------解决方案--------------------------------------------------------
通过C API,不需要这个DELIMITER了。然后你一句一句分开执行