下面是编程之家 jb51.cc 通过网络收集整理的代码片段。
编程之家小编现在分享给大家,也给大家做个参考。
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 ("总分为:%s\n",sqlrow[0]); } mysql_free_result (res_ptr); } mysql_close (my_connection); return 0; }
以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。