mysql存储过程的建立及使用

建立存储过程,特别是带有参数的情况反复出错,经常提示“字符串格式不正确”,或者是找不到这样,找不到那样,经分细心分析、分步测试,终于上传成功,这里介绍的是APMServ5.2.6:

一,先解决mysql内部错误:

因为APMServ5.2.6的mysql内部有错,叫BUG好些,容易误入陷阱,需要先把mysql中的proc表删除,然后利用SQL语句重建一个新表,具体参阅本文附件。

二,建一个最简单的存储过程以便测试是否解决了上述BUG总题:

1)================================================

简单测试建立存储过程(不带参数),测试的表自己相应改变

---------------------------------------------------

CREATE PROCEDURE abc()

begin

insert into answertable (answer_subject_id,answer_voteway_id) values (123,456);

end;

注意:在phpMyAdmin界面中Delimiter改为//(或其它)才能操作成功上边语句,因为上边用到了分号,不能再把默认分号作为分割符。

建立存储过程后,在SQL界面测试:call answertable 然后“执行”,

经测试成功,再继续以下测试。

2)==================================

单独建立一个参数(数字类型)的存储过程

-------------------------------------

CREATE PROCEDURE SaveUserAnswer1 (in xanswer_subject_id int(11))

begin

insert into answertable (answer_subject_id) values (xanswer_subject_id);

end

建成存储过程后,C#中调用如下:

数据库操作类中的一个方法:

public void SaveWithProcedure(string _subject)

{

MySqlConnection conn = new MySqlConnection(connstr)

string connstr1 = string.Format("Server={0};Port={1};Database={2};Uid={3};Pwd={4};charset=gb2312;", "127.0.0.1", "3306", "vote", "root", "");

MySqlDataAdapter mysqldata = new MySqlDataAdapter();

DataSet dataset = new DataSet();

conn = new MySqlConnection(connstr1);

mysqldata.SelectCommand = new MySqlCommand();

mysqldata.SelectCommand.Connection = conn;

mysqldata.SelectCommand.CommandText = "SaveUserAnswer1";

mysqldata.SelectCommand.CommandType = CommandType.StoredProcedure;

MySqlParameter subject_parameter = new MySqlParameter("?xanswer_subject_id", MySqlDbType.Int32);//mysql的存储过程参数是以?打头的

subject_parameter.Value  = _subject;

mysqldata.SelectCommand.Parameters.Add(subject_parameter);

mysqldata.Fill(dataset, "SaveUserAnswer1");

}

主界面调用,实例化类(*)后调用类的方法如下:

*.SaveWithProcedure(103);

3)==================================

相应地,测试字符类型,varchar

------------------------------------

CREATE PROCEDURE SaveUserAnswer2 (in xanswer_ip varchar(20))

begin

insert into answertable (answer_ip) values (xanswer_ip);

end

类的方法改动下边相应字符参数部分,(注意:调用存储名也变更了)

MySqlParameter ip_parameter = new MySqlParameter("?xanswer_ip", MySqlDbType.VarChar,20 );

ip_parameter.Value = _ip;

mysqldata.SelectCommand.Parameters.Add(ip_parameter);

主界面调用,实例化类(*)后调用类的方法:

*.SaveWithProcedure("192.168.1.3");

4)==================================

相应地,测试时间类型,varchar

------------------------------------

CREATE PROCEDURE SaveUserAnswer3 (in xanswer_time datetime )

begin

insert into answertable (answer_time) values (xanswer_time);

end

类的方法改动下边相应字符参数部分

MySqlParameter dt_parameter = new MySqlParameter("?xanswer_time", MySqlDbType.Datetime  );

dt_parameter.Value = _dt;

mysqldata.SelectCommand.Parameters.Add(dt_parameter);

主界面调用,实例化类(*)后调用类的方法:

*.SaveWithProcedure(DateTime .Now );

转载请注明出处,欢迎访问:http://www.cnblogs.com/dooroo

---附件(文摘):-------------------------------------------------------

将phpmyadmin中的mysql数据库中的表proc删除

执行以下代码重建该表

------------------------------------------------------------------------

CREATE TABLE `proc` (

`db` char(64) character set utf8 collate utf8_bin NOT NULL default '',

`name` char(64) NOT NULL default '',

`type` enum('FUNCTION','PROCEDURE') NOT NULL,

`specific_name` char(64) NOT NULL default '',

`language` enum('SQL') NOT NULL default 'SQL',

`sql_data_access` enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NOT NULL default 'CONTAINS_SQL',

`is_deterministic` enum('YES','NO') NOT NULL default 'NO',

`security_type` enum('INVOKER','DEFINER') NOT NULL default 'DEFINER',

`param_list` blob NOT NULL,

`returns` char(64) NOT NULL default '',

`body` longblob NOT NULL,

`definer` char(77) character set utf8 collate utf8_bin NOT NULL default '',

`created` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

`modified` timestamp NOT NULL default '0000-00-00 00:00:00',

`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','GBASE80','GBASE81','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE') NOT NULL default '',

`comment` char(64) character set utf8 collate utf8_bin NOT NULL default '',

`character_set_client` char(32) character set utf8 collate utf8_bin default NULL,

`collation_connection` char(32) character set utf8 collate utf8_bin default NULL,

`db_collation` char(32) character set utf8 collate utf8_bin default NULL,

`body_utf8` longblob,

PRIMARY KEY (`db`,`name`,`type`)

) DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'

========================================================================================

早期的该表结构如下:

---------------------------------------------------------------------------------------

CREATE TABLE `proc` (

`db` char(64) character set utf8 collate utf8_bin NOT NULL default '',

`name` char(64) NOT NULL default '',

`type` enum('FUNCTION','PROCEDURE') NOT NULL,

`specific_name` char(64) NOT NULL default '',

`language` enum('SQL') NOT NULL default 'SQL',

`sql_data_access` enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NOT NULL default 'CONTAINS_SQL',

`is_deterministic` enum('YES','NO') NOT NULL default 'NO',

`security_type` enum('INVOKER','DEFINER') NOT NULL default 'DEFINER',

`param_list` blob NOT NULL,

`returns` char(64) NOT NULL default '',

`body` longblob NOT NULL,

`definer` char(77) character set utf8 collate utf8_bin NOT NULL default '',

`created` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

`modified` timestamp NOT NULL default '0000-00-00 00:00:00',

`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','GBASE323','GBASE40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE') NOT NULL default '',

`comment` char(64) character set utf8 collate utf8_bin NOT NULL default '',

PRIMARY KEY (`db`,`name`,`type`)

) DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'

数据库mysql存储过程_[数据库]mysql存储过程的建立及使用相关推荐

  1. mysql怎么写数据存储过程_数据库存储过程要怎么写

    SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数) ...

  2. mysql数据库工程师简历_数据库工程师简历-自我评价怎么写(范文)

    数据库工程师简历模板下载-自我评价范文 [网盘下载]100+清新大气简历模板下载: 数据库开发工程师简历-自我评价(范文1) 1. 从事过ORACLE数据库开发和数据库管理,在开发.管理.运维方面都有 ...

  3. c语言 mysql触发器_数据库触发器 @符号

    8. 函数 内置函数 聚合函数 对一组值进行运算,但返回一个汇总值. AVG 返回组中各值的平均值. 其中忽略 Null 值. CHECKSUM_AGG 返回组中各值的校验和. 将忽略 Null 值. ...

  4. mysql数据库迁移对比_数据库的迁移总结及区别比较(Oracle,MySQL,SQLServer)

    徐亮,2011-4-1 导言:最近的数据超市项目需要从SQLServer迁移到MySql.在之前并没有很多数据库迁移方面的经验,所以也不知道迁移需要花费多久,都要做什么工作.通过几天的工作,项目已经顺 ...

  5. 数据库事务mysql意思_数据库 事务 作用

    事务ACID属性与隔离级别 概念 数据库领域中的事务指的是一系列对数据库的操作集合,是数据库管理系统(DBMS)定义的一个执行单位.事务的作用体现在两个方面: 在并发访问数据库的场景中,利用事务来隔离 ...

  6. MySQL学习_数据库和表的基本操作

    目录 1 创建和查看数据库 1.1 创建数据库 1.2 查看数据库 1.3 修改数据库 1.4 删除数据库 2 数据类型 2.1 整数类型 2.2 日期数据类型 2.3 字符串数据类型 3表的基本操作 ...

  7. c连接mysql数据库字符串函数_在mysql数据库—— 字符串函数的运用

    在mysql数据库中函数的使用 字符函数: 函数名称 描述 concat 字符连接 Concat_ws 使用指定的分隔符进行字符连接 format 数字格式化(千分化) Lower 转换成小写字母 u ...

  8. mysql整备_【mysql】使用xtrabackup在线增量备份及恢复数据库

    一.Percona Xtrabackup 简介 1.Xtrabackup  bin目录文件 介绍 1)innobackupex innobackupex 是xtrabackup的一个符号链接 . in ...

  9. mysql数据库建仓范式_存mysql个数

    MySQL学习笔记之数据类型详解 注:以下内容针对MySQL5.0及以上版本 MySQL的数据类型非常多,选择正确的数据类型对于获得高性能至关重要,本文是我结合网上看到的一些blog加上<高性能 ...

  10. mysql数据库链接百分号_数据库百分号怎么用

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. Spring+SpringMVC+Mybatics配置文件解析
  2. 20220401 A满秩,B满秩,AB一定满秩
  3. 如何判断Socket连接失效
  4. phpstorm一个窗口打开多个项目
  5. quartz 每月一次_Quartz Cron表达式 每周、每月执行一次
  6. 从外网Thinkphp3日志泄露到杀入内网域控 - 红队攻击之域内靶机渗透实战演练
  7. P2P原理及UDP穿透简单说明
  8. Oracle 用户,角色,权限等
  9. 全国计算机等级考试汇编,2011年3月汇编全国计算机等级考试(南开100题三级网络技术上机试题汇编)...
  10. 电脑系统如何锁定计算机,如何删除“解除计算机锁定”页面?
  11. Android设置按钮点击后变色(导航栏变色)
  12. bzoj 3308: 九月的咖啡店(最大费用最大流)
  13. linux网络分析之回环网卡
  14. DDD案例(2):从领域分析到代码实现
  15. ESP32/ESP32S2直连腾讯云,实现微信小程序控制
  16. efm32芯片电压_【经验】基于EFM32G232芯片 ADC采样毛刺问题分析以及解决方案
  17. 软件原型设计(软件Axure_RP)
  18. B站这场跨年晚会价值60亿,凭啥?
  19. 力扣 两数相加 C语言 题解
  20. php请求纯文本,php – 使用纯文本回退发送HTML简报

热门文章

  1. 国外学python的软件_全球开发者调查报告:IT人最想学习 Go 和 Python、美国开发者收入最高...
  2. 顺序查找法,用函数实现。
  3. 基于oracle设计与实现,基于Oracle的高校研究生招生系统设计与实现.doc
  4. 小程序input获得焦点触发_小程序如何获得种子用户,微信9亿月活用户来教你!...
  5. 直角三角形的边角关系_华师大版九年级第四章解直角三角形,知识点讲解加经典例题分析...
  6. Java怎么在if输出中进行运算_磕代码:c/c++/java:输入三个整数,输出运算结果;if条件句的使...
  7. Java黑皮书课后题第4章:*4.15(电话键盘)电话上的国际标准字母/数字映射如下所示。编写程序,提示用户输入一个小写或大写字母,然后显示对应数字。对于非字母输入,提示非法输入
  8. SQL 除去数字中多于的0
  9. 讲解web服务所涉及到的重要知识点
  10. 树的先序遍历的栈实现