首页 > 数据库 > MySQL > MYSQL存储过程(转载)
|
CREATE
PROCEDURE存储过程名
(参数列表) |
|
mysql>
delimiter //mysql>
CREATE PROCEDURE simpleproc (OUT param1
INT) |
|
ALTER
PROCEDURE |
|
DROP eg:DROP PROCEDURE IF
EXISTS proc_employee
(proc_employee |
|
SHOW
CREATE
PROCEDURE |
|
SHOW
|
|
CALL |
|
[begin_label:]
BEGIN |
存储子程序可以使用BEGIN ... END复合语句来包含多个语句。
statement_list
复合语句可以被标记。除非begin_label存在,否则end_label不能被给出,并且如果二者都存在,他们必须是同样的。
DECLARE语句被用来把不同项目局域到一个子程序:局部变量
DECLARE仅被用在BEGIN ... END复合语句里,并且必须在复合语句的开头,在任何其它语句之前。
1.1
| DECLARE var_name[,...] type [DEFAULT value]这个语句被用来声明局部变量。要给变量提供一个默认值,请包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。局部变量的作用范围在它被声明的BEGIN ... END块内。它可以被用在嵌套的块中,除了那些用相同名字声明变量的块。 |
1.2
| SET var_name = expr [, var_name = expr] 在存储程序中的SET语句是一般SET语句的扩展版本。被参考变量可能是子程序内声明的变量,或者是全局服务器变量。在存储程序中的SET语句作为预先存在的SET语法的一部分来实现。这允许SET a=x, b=y, ...这样的扩展语法。其中不同的变量类型(局域声明变量及全局和集体变量)可以被混合起来。这也允许把局部变量和一些只对系统变量有意义的选项合并起来。 |
1.3
| SELECT col_name[,...] INTO var_name[,...] table_expr这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。SELECT id,data INTO x,y FROM test.t1 LIMIT 1;注意,用户变量名在MySQL 5.1中是对大小写不敏感的。 |
重要: SQL变量名不能和列名一样。如果SELECT ... INTO这样的SQL语句包含一个对列的参考,并包含一个与列相同名字的局部变量,MySQL当前把参考解释为一个变量的名字。
此小节内容来自:
参见地址:http://www.blogjava.net/nonels/archive/2009/04/22/233324.html
MySQL
|
MySQL |
MySQL
|
MySQL |
MySQL
|
MySQL |
总结
|
如果仅仅想把数据传给 |
1.1
带(输出参数)返回值的存储过程:
|
--删除存储过程 DROP PROCEDURE IF EXISTS proc_employee_getCount --创建存储过程 CREATE PROCEDURE proc_employee_getCount(out n int) BEGIN END --MYSQL调用存储过程 CALL proc_employee_getCount(@n); |
带输入参数的存储过程:
|
--删除存储过程 DROP PROCEDURE IF EXISTS proc_employee_findById; --创建存储过程 CREATE PROCEDURE proc_employee_findById(in n int) BEGIN END --定义变量 SET @n=1; --调用存储过程 CALL proc_employee_findById(@n); |
操作存储过程时应注意:
1.
2.
3.
SET @变量名=初始值;
4.
相关API:java.sql.CallableStatement
使用到java.sql.CallableStatement接口,该接口专门用来调用存储过程;
该对象的获得依赖于java.sql.Connection;
通过Connection实例的prepareCall()方法返回CallableStatement对象
prepareCall()内部为一固定写法{call
eg:
存储过程中参数处理:
输入参数:通过java.sql.CallableStatement实例的setXXX()方法赋值,用法等同于java.sql.PreparedStatement
输出参数:通过java.sql.CallableStatement实例的registerOutParameter(参数位置,
Java代码调用带输入参数的存储过程
|
publicvoid
|
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21348893/viewspace-1114588/ ,如需转载,请注明出处,否则将追究法律责任。