之前看过一些基本的mysql命令,也练习过一段时间。但由于没有坚持,等到要用的时候就经常忘记,所以又得重新学习。
最近都是用linux进行操作,感觉还是相当爽。主要是该系统下有很多帮助,在没有网络的情况还是相当棒的。进入mysql之后,输入help procedure,就有关于procedure的帮助,
Many help items for your request exist.
To make a more specific request, please type 'help - ',
where - is one of the following
topics:
ALTER PROCEDURE #更改procedure存储过程
CREATE PROCEDURE #创建procedure存储过程
DROP PROCEDURE #删除procedure存储过程
PROCEDURE ANALYSE #对目标列进行数据结构优化
SELECT #这个就不说了,都知道的
SHOW #功能强度的show,自己help show瞧瞧吧
SHOW CREATE PROCEDURE#显示procedure创建过程
SHOW PROCEDURE CODE #这个功能得再mysql编译时加上--with-debug才能使用
SHOW PROCEDURE STATUS #显示存储过程的状态
当然我们每个人学东西最好能使用该程序自带的帮助,这样能让自己了解的更清楚,而且加强英文阅读。
create procedure语法:
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
CREATE
[DEFINER = { user | CURRENT_USER }]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement
关于proc_parameter,help中专门注解。有IN,OUT,INOUT三个参数类型,分别代表输入,输出,输入输出。当用call调用时,IN只能接收数据,向procedure传入数据;而OUT却可以将procedure修改过后的数据传递给参数,方便以后使用。INOUT既可以调用也可以procedure之后使用。其中OUT传出的参数,调用时需要使用@name,切记。
example:
mysql>delimiter //
mysql>create procedure countlen(OUT parm int)
>begin
> select count(*) into parm from testmysql.testmysql3 ;
>end//
mysql>call countlen(@a) //
mysql>select @a //
阅读(1024) | 评论(0) | 转发(0) |