`
sjsky
  • 浏览: 921626 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mysql存储过程初试

阅读更多
    blog迁移至:http://www.micmiu.com

mysql自从5.0开始支持存储过程,上周末没事小试下,在此记录下自己的初步学习的过程。
C:\Users\michael>mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.51-community MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement
从上面的信息可以看出我的版本是5.1.51,是可以执行存储过程。
如果不确定自己的版本,可以通过下面的命令确认下:
mysql> select VERSION();
+------------------+
| VERSION()        |
+------------------+
| 5.1.51-community |
+------------------+
1 row in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'version';
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| version       | 5.1.51-community |
+---------------+------------------+
1 row in set (0.00 sec)

【一】基本命令及语法
[1].创建存储过程
create procedure proc_name()
begin
………
end

[2].调用存储过程
call proc_name()

[3].删除存储过程
drop procedure proc_name

[5].show procedure status 显示数据库中所有存储的存储过程基本信息
mysql> show procedure status;
+------+-----------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+--
--------------------+--------------------+
| Db   | Name            | Type      | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | c
ollation_connection | Database Collation |
+------+-----------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+--
--------------------+--------------------+
| test | helloproc       | PROCEDURE | root@localhost | 2011-01-08 22:56:16 | 2011-01-08 22:56:16 | DEFINER       |         | utf8                 | u
tf8_general_ci      | utf8_general_ci    |
| test | proc_sysdate    | PROCEDURE | root@localhost | 2011-01-09 12:53:15 | 2011-01-09 12:53:15 | DEFINER       |         | utf8                 | u
tf8_general_ci      | utf8_general_ci    |
| test | proc_test_count | PROCEDURE | root@localhost | 2011-01-09 18:12:36 | 2011-01-09 18:12:36 | DEFINER       |         | utf8                 | u
tf8_general_ci      | utf8_general_ci    |
+------+-----------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+--
--------------------+--------------------+
3 rows in set (0.00 sec)

[6].show create procedure proc_name 显示某一个存储过程的详细信息
mysql> show create procedure proc_sysdate;
+--------------+----------+------------------------------------------------------------------------------------------+----------------------+---------
-------------+--------------------+
| Procedure    | sql_mode | Create Procedure                                                                         | character_set_client | collatio
n_connection | Database Collation |
+--------------+----------+------------------------------------------------------------------------------------------+----------------------+---------
-------------+--------------------+
| proc_sysdate |          | CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_sysdate`()
begin
select SYSDATE();
end | utf8                 | utf8_general_ci      | utf8_general_ci    |
+--------------+----------+------------------------------------------------------------------------------------------+----------------------+---------
-------------+--------------------+
1 row in set (0.00 sec)

【二】简单范例
[1] 创建一个简单的查询当前日期和时间的存储过程,如下:
mysql> use test
Database changed
mysql> delimiter |
mysql> create procedure proc_sysdate()
    -> begin
    -> select SYSDATE();
    -> end
    -> |
Query OK, 0 rows affected (0.00 sec)

ps:delimiter | 定义结束符合为“|
mysql> call proc_sysdate()|
+---------------------+
| SYSDATE()           |
+---------------------+
| 2011-01-09 12:53:30 |
+---------------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.02 sec)

[2] 创建一个表:TB_NAME_INFO用来测试存储过程:
mysql> DROP TABLE IF EXISTS `TB_NAME_INFO`;
    -> CREATE TABLE `TB_NAME_INFO`(
    -> `ID` smallint(5) NOT NULL AUTO_INCREMENT,
    -> `NAME` varchar(50) NOT NULL,
    -> PRIMARY KEY(`ID`))
    -> ENGINE=InnoDB DEFAULT CHARSET=utf8;
    -> |
Query OK, 0 rows affected (0.08 sec)

Query OK, 0 rows affected (0.08 sec)

验证表是否创建成功,如下:
mysql> show tables|
+----------------+
| Tables_in_test |
+----------------+
| log4j_info     |
| tb_name_info   |
+----------------+
2 rows in set (0.00 sec)

[3] 自己初始化一批数据以便测试,然后创建一个存储过程:用于查询表的记录总数
mysql> delimiter |
mysql> create procedure proc_test_count()
    -> begin
    -> select count(*) from tb_name_info;
    -> end
    -> |
Query OK, 0 rows affected (0.06 sec)
mysql> call proc_test_count()|
+----------+
| count(*) |
+----------+
|        4 |
+----------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)


[5] 创建一个存储过程:用于查询表的记录总数并返回查询结果
mysql> create procedure proc_test_return_count(out ct int)
    -> begin
    -> select count(*) into ct from tb_name_info;
    -> end
    -> |
Query OK, 0 rows affected (0.00 sec)

mysql> call proc_test_return_count(@ct)|
Query OK, 0 rows affected (0.01 sec)

mysql> select @ct|
+------+
| @ct   |
+------+
|    4 |
+------+
1 row in set (0.00 sec)


------------------------------分------------------------------隔------------------------------线------------------------------
分享到:
评论

相关推荐

    基于c++的研究生初试录取管理系统全文件

    4. **数据库接口**:虽然直接使用文件操作也能实现数据管理,但若规模较大,考虑使用SQL数据库如MySQL进行存储,以提高数据管理效率。 5. **调试与测试**:Visual Studio提供了强大的调试工具,开发者应充分利用其...

    [中学教育]研究生初试录取管理系统.doc

    研究生初试录取管理系统是一个用于管理研究生入学考试(简称“考研”)初步选拔过程的信息系统。该系统主要用于收集、存储和处理考生的相关数据,以便进行有效的录取决策。以下是系统的主要功能和涉及的知识点: 1....

    医院 妇幼保健院 医疗机构 信息科计算机初试面试题目答案18套卷

    数据库管理是医疗信息科的核心技能,考生需要掌握关系型数据库如MySQL、Oracle或Microsoft SQL Server的使用,包括数据查询、存储过程、事务处理等。此外,对NoSQL数据库的理解,如MongoDB,以及数据备份恢复策略也...

    矿大数据库课件全集(内部)

    此外,还会涉及事务处理、视图、存储过程和触发器等高级概念。 4. **数据库安全性**:讨论如何保护数据库免受未授权访问,包括用户权限管理、角色、加密和审计日志等。 5. **数据库备份与恢复**:学习如何备份...

    sqlways 3.9.238

    2. **高效转换**:该工具具备快速转换大量对象的能力,包括表、视图、存储过程、触发器、索引等,确保迁移过程中数据的完整性和一致性。 3. **注册机制**:虽然SQLWays提供注册选项,但即使未注册,用户仍可不受...

    基于 Swoole 构建的 CTF AWD 比赛平台初试水,附带一道题目以及完整 docker.zip

    3. **数据库**:存储题目信息、用户数据、攻击记录等,可能使用MySQL或SQLite。 4. **评分逻辑**:源代码中可能包含对攻击成功的判断和分数计算的函数。 5. **安全机制**:为了保证比赛公平,可能有一些防止作弊的...

    C#学生信息管理系统.zip

    这些脚本用于定义数据表结构,包括字段名、数据类型、主键等,确保数据的正确存储和查询。 "student_stuinfo.sql"可能包含关于学生的个人信息,如姓名、学号、年级等;"student_exam.sql"可能涉及考试成绩和相关...

    MyProjects

    【描述】描述中提到的“初试牛刀”,意味着这个项目可能是开发者学习和实践C#编程语言以及Web应用开发技能的一个起点。C#是一种面向对象的编程语言,由微软公司开发,广泛应用于Windows平台的应用程序和游戏开发,...

    2003年武汉理工大学计算机硕士研究生入学考试复试试题

    - **个人信息**:考生需提供姓名、准考证号、毕业学校、专业、初试成绩、是否应届生、是否同等学力等信息。 - **技术报告**:要求考生针对数据库技术、多媒体技术、网络技术、智能技术、并行分布式技术中的任一研究...

Global site tag (gtag.js) - Google Analytics