Mysql应用MySQL存储过程和函数的操作(十二)
《Mysql应用MySQL存储过程和函数的操作(十二)》要点: MYSQL应用数据库对象表时存储和操作数据的逻辑结构,而数据库对象存储过程和函数,则是用来实现将一组关于表操作的sql语句当作一个整体来执行.在数据库系统中,当调用存储过程和函数时,则会执行这些对象中所设置的sql语句组,从而实现相应功能. MYSQL应用关于存储过程和函数的优点如下: MYSQL应用关于存储过程和函数的缺点如下: MYSQL应用2. 创建存储过程和函数? MYSQL应用语法形式如下: MYSQL应用
create procedure procedure_name([procedure_parameter[,...]])
[characteristic...] routine_body
//说明:procedure_name参数表示所要创建的存储过程的名字,procedure_parameter参数表示存储过程的参数,characteristic参数表示存储过程的特性,routine_body参数表示存储过程的sql语句代码,可以用begin...end来标志sql语句的开始和结束.
//注意:在具体创建存储过程时,存储过程名不能和已经存在的存储过程名重复,推荐存储过程名为procedure_xxx或者proce_xxx;
//procedure_parameter 中每个参数的语法形式为:
[IN|OUT|INOUT] parameter_name type
//该语句中每个参数由三部分组成,分别为输入/输出类型、参数名和参数类型.
MYSQL应用characteristic参数的取值为: MYSQL应用??? 1. language sql,表示存储过程的routine_body部分由sql语言的语句组成.为mysql软件所有默认的语句. MYSQL应用2.2 创建函数语法形式: MYSQL应用语法形式如下: MYSQL应用
create function function_name([function_parameter[,...]])
[characteristic...] routine_body
MYSQL应用??? 上述语句中,function_name参数表示所要创建的函数的名字;function_parameter参数表示函数的参数,characteristic参数表示函数的特性,该参数的取值与存储过程中的取值相同.routine_body参数表示函数的sql语句代码,可以用begin…end来表示sql语句的开始和结束. MYSQL应用function_parameter中每个参数的语法形式如下: MYSQL应用??? 在上述语句中每个参数由两部分组成,分别为参数名和参数类型.parameter_name表示参数名.type表示参数类型.? MYSQL应用2.3 创建简单的存储过程和函数: MYSQL应用//查询雇员表中所有雇员工资的存储过程: MYSQL应用
mysql> delimiter $$
mysql> delimiter $$ create procedure proce_employee_sal()
comment '查询所有雇员的工资'
begin
select sal from t_employee;
end $$
dilimiter ;
MYSQL应用??? 通常在创建存储过程时,通过命令delimiter && 将sql语句的结束符由“;”符号修改成两个美元符号.这主要是因为sql语句中默认语句结束符为分好(;),即存储过程中的sql语句也需要用分号来结束,将结束符号修改成两个美元符之后,就可以在执行过程中避免冲突.不过最后不要忘记将通过命令“delimiter ;”将结束符修改为sql语句中默认的结束符号. MYSQL应用创建函数示例: MYSQL应用
delimiter $$
create function func_employee_sal (empno int(11))
returns double(10,2)
comment '查询某个雇员的工资'
begin
return (
select sal from t_employee where t_employee.empno=empno;
)
end$$
delimiter ;
MYSQL应用??? 创建了一个名为func_employee_sal的函数,该函数拥有一个类型为int(11),名为empno的参数,返回值为double(10,2)类型.select语句从t_employee表中查询empnoo字段值等于所传入参数empno值的记录,同时将该条记录的sal字段的值返回. MYSQL应用3. 关于存储过程和函数的表达式? MYSQL应用3.1 操作变量: MYSQL应用??? 3.1.1 声明变量: MYSQL应用语法形式如下: MYSQL应用??? 在上述语句中,var_name参数表示要声明的变量的名字;参数type表示所要声明变量的类型;default value用来实现设置变量的默认值,如果无该语句默认值为null.在具体声明变量时,可以同时定义多个变量.? MYSQL应用??? 3.1.2 赋值变量: MYSQL应用语法形式如下: MYSQL应用
select filed_name[,...] into var_name[,...]
from table_name
where condition
MYSQL应用??? var_name参数表示所要赋值变量名字,参数expr是关于变量的赋值表达式.在为变量赋值时,可以同时为多个变量赋值,各个变量的赋值语句之间用逗号隔开. MYSQL应用示例: MYSQL应用
declare employee_sal int default 1000;
declare employee_sal int default 1000;
set employee_sal = 3500;
select sal into employee_sal from t_employee where empno=7556;
MYSQL应用3.2 操作条件: MYSQL应用语法形式如下: MYSQL应用
declare condition_name condition for condition_value
condition_value:
sqlstate[value] sqlstate_value
|mysql_error_code
MYSQL应用condition_name参数表示所要定义的条件名称;参数condition_value用来实现设置条件的类型;参数sqlstate_value和mysql_error_code用来设置条件的错误.? MYSQL应用??? 3.2.2 定义处理程序: MYSQL应用语法形式为: MYSQL应用
declare handler_type handler for condition_value[,...] sp_statement
handler_type:
continue
|exit
|undo
condition_value:
sqlstate[value] sqlstate_value
|condition_name
|sqlwarning
|not found
|sqlexception
|mysql_error_code
MYSQL应用??? 这个语句指定每个可以处理一个或多个条件的处理程序.如果产生一个或多个条件,指定的语句被执行.对一个continue处理程序,当前子程序的执行处理程序语句之后继续.对于exit处理程序,当前begin…end复合语句的执行被终止.undo处理程序类型语句还不被支持. MYSQL应用3.3 使用游标: MYSQL应用??? 3.3.1 声明游标: MYSQL应用语法形式如下: MYSQL应用??? 上述语句中,cursor_name参数表示有游标的名称,参数select_statement表示select语句.因为游标需要遍历结果集中的每一行,增加了服务器的负担,导致游标的效率并不高.如果游标操作的数据超过1万行,那么应该采用其他方式,另外如果使用了游标,还应尽量避免在游标循环中进行表连接操作.? MYSQL应用??? 3.3.2 打开游标: MYSQL应用语法形式为: MYSQL应用//注意,打开一个游标时,游标并不指向第一条记录,而是指向第一条记录的前边. MYSQL应用??? 3.3.3 使用游标: MYSQL应用语法形式如下: MYSQL应用??? 3.3.4 关闭游标: MYSQL应用语法形式如下: MYSQL应用4. 修改存储过程和函数? MYSQL应用语法形式如下: MYSQL应用
alter procedure procedure_name
[characteristic...]
MYSQL应用??? procedure_name参数表示所要修改存储过程的名字,而characteristic参数指定修改后存储过程的特性,与定义存储过程的该参数相比,取值只能是如下值: MYSQL应用
|(contains sql|no sql|reads sql data|modifys sql data)
|sql security {definer|invoker}
|comment ‘string'
)
MYSQL应用? 4.2 修改函数: MYSQL应用语法形式如下: MYSQL应用
alter function function_name
[characteristic...]
MYSQL应用??? function_name参数表示所要修改函数的名字,而characteristic参数指定修改后的函数特性,与定义函数的该参数相比,取值只能是如下值: MYSQL应用5. 删除存储过程和函数? MYSQL应用语法形式如下: MYSQL应用? 5.2 通过drop function语句删除函数: MYSQL应用语法形式如下: MYSQL应用以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家PHP. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |