加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读