C语言调用mysql的存储过程
发布时间:2020-12-16 07:43:13 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 delimiter //CREATE PROCEDURE cal_grade(x INT,y INT,out t int,pert float,s VARCHAR(8),c VARCHAR(8))LABEL_PROC:BEGIN IF ( x 0 || x 100 ) THEN
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 delimiter // CREATE PROCEDURE cal_grade(x INT,y INT,out t int,pert float,s VARCHAR(8),c VARCHAR(8)) LABEL_PROC: BEGIN IF ( x < 0 || x > 100 ) THEN SET t = -1; LEAVE LABEL_PROC; END IF; IF ( y < 0 || y > 100 ) THEN SET t = -2; LEAVE LABEL_PROC; END IF; SET t = ROUND( x*pert + y*(1-pert) ); UPDATE sc SET ordinary_score=x,last_score=y WHERE sno=s AND cno=c AND tno=tn; END LABEL_PROC // delimiter ; C语言调用 #include <stdio.h> #include "mysql.h" int main() { MYSQL *my_connection; MYSQL_RES *res_ptr; MYSQL_ROW sqlrow; char buf[100]; my_connection = mysql_init (NULL); //下面连接的最后一个参数必须为CLIENT_MULTI_STATEMENTS,不然就会报错select error: PROCEDURE *** can’t return a result set in the given context my_connection = mysql_real_connect (my_connection,"localhost","root","test",NULL,CLIENT_MULTI_STATEMENTS); sprintf (buf,"call cal_grade(%d,%d,@t,%f,%s,%s)",10,0.3,123,456); if ( mysql_query (my_connection,buf) ) sprintf (stderr,mysql_error (my_connection)); else { //获得返回参数@t,@t是传出参数 mysql_query (my_connection,"select @t"); res_ptr = mysql_store_result (my_connection); if (res_ptr) { sqlrow = mysql_fetch_row (res_ptr); if (!strcmp (sqlrow[0],"-1")) printf ("平时分不在范围之内n"); else if (!strcmp (sqlrow[0],"-2")) printf ("卷面分不在范围之内n"); else printf ("总分为:%sn",sqlrow[0]); } mysql_free_result (res_ptr); } mysql_close (my_connection); return 0; } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |