MySql存储过程 创建删除与实例

mysql教程存储过程是带参数的存储过程(动态执行sql语句),该mysql存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有调用方式:

mysql 5.0
新特性教程是为需要了解5.0版本新特性的mysql老用户而写的。简单的来说是介绍了“存储过程、触发器、视图、信息架构视图”,

 

  call getusersdynamic('age<=30','');

 

/********动态查询用户的信息********/    create procedure getusersdynamic(wherecondition varchar(500),orderbyexpress varchar(100))    begin    declare stmt varchar(2000);    if length(orderbyexpress)>0 then    begin         set @sqlstr=concat('select id,name,password,age,getdate(adddate) as adddate from users where ',wherecondition,' order by ',orderbyexpress);    end;    else    begin         set @sqlstr=concat('select id,name,password,age,getdate(adddate) as adddate from users where ',wherecondition);    end;    end if;    prepare stmt from @sqlstr;    execute stmt;    end;     getdate()是一个自定义的函数,作用是返回日期的短格式

 

create definer=`root`@`localhost` function `getdate`($date datetime) returns varchar(50) charset latin1    return date_format($date,'%y-%m-%d');    动态插入数据的mysql存储过程,(注意四个单引号表示一个一引号):

 

create definer=`root`@`localhost` procedure `insertuser`(in name2 varchar(50),in password2 varchar(32),in age2 int,in adddate2 datetime)    begin    declare stmt varchar(2000);    set @sqlstr=concat('insert into users(name,password,age,adddate) values(');    set @sqlstr=concat(@sqlstr,'''',name2,'''',',','''',password2,'''',',',age2,',','''',adddate2,'''',')');    prepare stmt from @sqlstr;    execute stmt;    end; 

 

在这里举个例子:mysql> drop function f;query ok, 0 rows affected (0.00 sec)

如果实例比较大,则需要在某些行和段落间加注释,同时我会用将“<--”符号放在页面的右边以表示强调。

 

例如:

mysql> create procedure p ()

-> begin

-> /* this procedure does nothing */ <--

-> end;//query ok, 0 rows affected (0.00 sec)

 

有时候我会将例子中的"mysql>"和"->"这些系统显示去掉,你可以直接将代码复制到mysql客户端程序中(如果你现在所读的
不是电子版的,可以在mysql.com网站下载相关脚本)所以的例子都已经在suse 9.2 linux、mysql 5.0.3公共版上测试通过。

在您阅读本书的时候,mysql已经有更高的版本,同时能支持更多os了,包括windows,sparc,hp-ux。因此这里的例子将能正常的运行在您的电脑上。但如果运行仍然出现故障,可以咨询你认识的资深mysql用户,以得到长久的支持和帮助。

 

a definition and an example 定义及实例

 

定义及实例存储过程是一种存储在书库中的程序(就像正规语言里的子程序一样),准确的来说,mysql支持的“routines(例程)”有两种:
一是我们说的存储过程,二是在其他sql语句中可以返回值的函数(使用起来和mysql预装载的函数一样,如pi())。我在本书里面会更经常使用存储过
程,因为这是我们过去的习惯,相信大家也会接受。

 

一个存储过程包括名字,参数列表,以及可以包括很多sql语句的sql语句集。

在这里对局部变量,异常处理,循环控制和if条件句有新的语法定义。

下面是一个包括存储过程的实例声明:(译注:为了方便阅读,此后的程序不添任何中文注释)

 

create procedure procedure1 /* name存储过程名*/

 

(in parameter1 integer) /* parameters参数*/

 

begin /* start of block语句块头*/

 

declare variable1 char(10); /* variables变量声明*/

 

if parameter1 = 17 then /* start of if if条件开始*/

 

set variable1 = 'birds'; /* assignment赋值*/

 

else

 

set variable1 = 'beasts'; /* assignment赋值*/

 

end if; /* end of if if结束*/

 

insert into table1 values (variable1);/* statement sql语句*/

 

end /* end of block语句块结束*/

 

 

时间: 2024-10-24 19:24:50

MySql存储过程 创建删除与实例的相关文章

php调用mysql存储过程会员登录验证实例分析

本文实例分析了php调用mysql存储过程的方法.分享给大家供大家参考.具体分析如下: Mysql存储过程创建语法,代码如下:  代码如下 复制代码 CREATE PROCEDURE和CREATE FUNCTION : CREATE PROCEDURE sp_name ([proc_parameter[,...]])       [characteristic ...] routine_body   CREATE FUNCTION sp_name ([func_parameter[,...]])

mysql存储过程创建与注意事项

mysql教程存储过程创建与注意事项 第一 mysql存储过程跟之前写sqlserver 2005 的存储过程有点区别; 第二,用的mysql第三方企业管理器 sqlyogent.exe 调试的时候,写存储过程和一般的查询语句要分开的,我是后来才意识到的,气得要命(可能也是用sqlserver 2005企业管理器的编辑器的习惯导致的). 废话少说,写存储过程,要注意如下几点: 第一 要定义delimiter //,意思是用//作为一段语句的结束符(这个很重要,我写的存储过程语法一点也没错,但是,

Mysql存储过程中游标的用法实例_Mysql

本文实例讲述了Mysql存储过程中游标的用法.分享给大家供大家参考.具体如下: 1. 批量插入商户路由关联数据: DELIMITER $$ USE `mmm_mac`$$ DROP PROCEDURE IF EXISTS `批量插入商户路由关联数据`$$ CREATE DEFINER=`root`@`%` PROCEDURE `批量插入商户路由关联数据`() BEGIN DECLARE v_partner_no VARCHAR(32); DECLARE v_partner_id INT(11);

oracle存储过程创建表分区实例_oracle

用存储过程创建数据表:创建时注意必须添加authid current_user,如果创建的表已存在,存储过程继续执行,但如不不加此关键语句,存储过程将出现异常,这个语句相当于赋权限.例1创建语句如下: 复制代码 代码如下: create or replaceprocedure sp_create_mnl(i_id varchar2) authid current_user  as   /********************************* 名称:sp_create_mnl 功能描述

MySQL索引创建 删除 增加 修改命令

简单的唯一索引: 可以创建一个唯一索引的表.唯一的索引意味着两个行不能拥有相同的索引值.这里是语法来创建索引的表  代码如下 复制代码 CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...); 可以使用一个或多个列上创建索引.例如,我们可以创建一个索引的使用在表tutorials_tbl的tutorial_author列上  代码如下 复制代码 CREATE UNIQUE INDEX AUTHOR_INDEX ON

mysql中创建/删除数据库方法

创建数据库 命令:  代码如下 复制代码 create database <数据库名> 例1: 建立一个名为xhkdb的数据库  代码如下 复制代码 1.CREATE DATABASE 数据库名; 2.GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码'; 3.SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASS

asp.net C#中 sql存储过程创建与应用实例

什么叫存储过程呢? 将常用的或很复杂的工作,预先用sql语句写好并用一个指定的名称存储起来, 那么以后要叫数据库教程提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令.     存储过程的优点     1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般sql语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度.     2.当对数据库进行复杂操作时(如对多个表进行update,insert,query,delete时),可将此

在Mysql上创建数据表实例代码_Mysql

复制代码 代码如下: create table shujubiao( id int primary key auto_increment, 指定为i整形 name varchar(32) not null, 指定为不固定长度,最大为32为字符,不能为空 password varchar(64) not null, 指定为不固定长度,最大为64为字符,不能为空 email varchar(128) not null, 指定为不固定长度,最大为128为字符,不能为空 age tinyint unsi

在Mysql存储过程中使用事务实例_Mysql

复制代码 代码如下: CREATE DEFINER=`root`@`localhost` PROCEDURE `createBusiness`(parameter1 int)BEGIN    #Routine body goes here...    DECLARE flag int DEFAULT parameter1;#声明变量flag,将参数值赋给该变量    DECLARE uuidStr VARCHAR(32);#声明一个长度为32位的字符串    DECLARE currentTim