JSP 创建存储过程
MySQL存储过程是从 MySQL 5.0 开始逐渐增加新的功能。在MySQL中 ,可以使用T-SQL语句CREATE PROCEDURE来创建存储过程。在创建存储过程时,应该指定所有的输入参数、执行数据库操作的编程语句、返回至调用过程或批处理时以示成功或失败的状态值、捕获和处理潜在错误时的错误处理语句等。
1.创建存储过程的规则
在设计和创建存储过程时,应该满足一定的约束和规则。只有满足了这些约束和规则才能创建有效的存储过程。
● CREATE PROCEDURE 定义自身可以包括任意数量和类型的SQL语句,但表10-3中的语句除外。因为不能在存储过程的任何位置使用这些语句。
表10-3 CREATE PROCEDURE 定义中不能出现的语句
名称 | 名称 |
CREATE AGGREGATE mysql存储过程使用 | CREATE RULE |
CREATE DEFAULT | CREATE SCHEMA |
CREATE或ALTER FUNCTION | CREATE或ALTER TRIGGER |
CREATE或ALTER PROCEDURE | CREATE.或ALTER VIEW |
SET PARSEONLY | SET SHOWPLAN_ALL |
SET SHOWPLAN_TEXT | SET SHOWPLAN_XML |
USE Database_name | |
● 可以引用在同一存储过程中创建的对象,只要引用时已经创建了该对象即可。
● 可以在存储过程内引用临时表。
● 如果在存储过程内创建本地临时表,则临时表仅为该存储过程而存在;退出该存储过程后,临时表将消失。
● 如果执行的存储过程将调用另一个存储过程,则被调用的存储过程可以访问由第一个存储过程创建的所有对象,包括临时表在内。
● 如果执行对远程MySQL实例进行更改的远程存储过程,则不能回滚这些更改,而且远程存储过程不参与事务处理。
● 存储过程中的参数的最大数目为2100。
● 存储过程中的局部变量的最大数目仅受可用内存的限制。
● 根据可用内存的不同,存储过程最大可达128MB。
2.存储过程的语法
使用CREATE PROCEDURE语句创建存储过程的语法如下。
CREATE PROCDURE procedure_name
[{parameter data_type}
[VARYING][=default][OUTPUT]][,…n]
[WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION}]
[FOR REPLICATION]
AS sql_statement[…n]
其主要参数含义含义如下:
● Procedure_name 存储过程的名称。过程名称在架构中必须唯一,可在procedure_name
前面使用一个数字符号“#”来创建局部临时过程,使用两个数字符号“#”来创建全局临时过程。对于CLR存储过程,不能指定临时名称。
● parameter 过程中的参数。在CREATE PROCEDURE语句中可以声明一个或多个参数。除非定义了参数的默认值或者将参数设置为等于另一个参数,否则用户必须在调用过程时为每个声明的参数提供值,如果指定了FOR REPLICATION,则无法声明参数。
● Data_type 参数的数据类型。所有数据类型均可以用作存储过程的参数。不过cursor数据类型只能用于OUTPUT参数。如果指定的数据类型为cursor,则还必须指定VARYING和OUTPUT关键字。
● Default 参数的默认值。如果定义了dafault值,则无须指定此参数的值即可执行过程。默认值必须是常量或NULL。如果过程使用带like关键字的参数,则可包含下列通配符:%、_、[]、[^]。
● Output 指示参数是输出参数。此选项的值可以返回给调用EXECUTE的语句。使用OUTPUT参数将值返回给过程的调用方。除非是CLR过程,否则text,ntext和image参数不能
用作OUTPUT参数。OUTPUT关键字的输出参数可以为游标占位符,CLR过程除外,<sql_statement>要包含在过程中的一个或多个T-SQL语句中。
3.创建存储过程
例如,在MySQL中的示例数据库【testdb】中创建一个名为book_proc的存储过程,它将从表中返回查询图书的编号、图书名称、库存量、价格等信息。使用CREATE PROCEDURE语句如下:
drop procedure if exists book_proc;
create procedure book_proc(IN name varchar(20) )
begin
select * from bookinfo where bookname=name;
end
在MySQL数据库中执行该操作如图10-14所示。
图10-14 创建存储过程
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论