C语言调用mysql的存储过程_MySQL

php中文网
发布: 2016-06-01 12:59:35
原创
1994人浏览过

本篇文章讲解C语言调用mysql数据库的存储过程的方法

下面假设有一张sc表,保存学生选课记录,有课程号,学号,平时分,卷面分,总分。
建立数据库表过程:
create table class(
cno varchar(8) not null,
sno varchar(8) not null,
ordinary_score int,
last_score int,
all_score int
);

存储过程
由括号包围的参数列必须总是存在。如果没有参数,也该使用一个空参数列()。每个参数 默认都是一个IN参数。要指定为其它参数,可在参数名之前使用关键词IN(默认,可缺省) OUT或INOUT。
IN参数是只传入
OUT参数是只传出
INOUT参数是既传入又传入,即双向传递

指定参数为in, out, 或inout 只对procedure是合法的。(function参数总是被认为是in参数)

建立存储过程,传入平时分x,卷面分y,平时分所占的比率pert,学号,课程号;建立过程如下

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 ;
登录后复制

<strong>C语言调用</strong>

CallSun人才招聘信息管理系统
CallSun人才招聘信息管理系统

一套完整的基于asp.net v2.0+MSSQL2000的人才网系统,该系统采用独特的缓存技术、PE结构识别上传文件的功能可以有效的防止木马的威胁,数据库采用存储过程和参数传递形式,有效的防止被注入的危险。完整的功能模块:企业招聘、人才求职、文章模块、友情链接、广告管理、在线留言、在线调查、企业黄页等功能。页面采用静态模板化开发,更改页面风格随心所欲!v2.4更新:一、增加功能:1、增加简单的分

CallSun人才招聘信息管理系统 0
查看详情 CallSun人才招聘信息管理系统
<code class="hljs perl">#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&rsquo;t return a result set in the given context
    my_connection = mysql_real_connect (my_connection, "localhost", "root", "root", "test", 0, NULL, CLIENT_MULTI_STATEMENTS);

    sprintf (buf, "call cal_grade(%d,%d,@t,%f,%s,%s)", 10, 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;
}</stdio.h></code>
登录后复制
C语言速学教程(入门到精通)
C语言速学教程(入门到精通)

C语言怎么学习?C语言怎么入门?C语言在哪学?C语言怎么学才快?不用担心,这里为大家提供了C语言速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号