存储过程
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
创建存储过程’
CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …] 过程体
DELIMITER //
CREATE PROCEDURE myproc(OUT s int)
BEGIN
SELECT COUNT(*) INTO s FROM students;
END
//
DELIMITER ;
• IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
• OUT:该值可在存储过程内部被改变,并可返回
CREATE PROCEDURE sp_name(IN parameter int)
BEGIN
• INOUT:调用时指定,并且可被改变和
例子``
IF-THEN-ELSE语句
DECLARE var int;
SET var=parameter+1;
IF var=0 THEN
INSERT INTO t VALUES (17);
END IF ;
IF parameter=0 THEN
UPDATE t SET s1=s1+1;
ELSE
UPDATE t SET s1=s1+2;
END IF ;
END ;
变量(类似局部):DECLARE 变量名1[,变量名2…] 数据类型 [默认值];
变量赋值:SET 变量名 = 变量值 [,变量名= 变量值 …]
用户变量(类似全局): 用户变量一般以@开头
在MySQL客户端使用用户变量
SELECT 'Hello World' into @x;
SELECT @x;
SET @y='Goodbye Cruel World';
SELECT @y;
SET @z=1+2+3;
SELECT @z;
在存储过程中使用用户变量
CREATE PROCEDURE GreetWorld() SELECT CONCAT(@greeting,’ World’);
SET @greeting=‘Hello’;
CALL GreetWorld();
在存储过程间传递全局范围的用户变量
CREATE PROCEDURE p1() SET @last_proc=‘p1’;
CREATE PROCEDURE p2() SELECT CONCAT('Last procedure was ',@last_proc);
CALL p1();
CALL p2();
用户变量和变量举例
CREATE PROCEDURE temp()
BEGIN
DECLARE a INT DEFAULT 1;
SET a=a+1;
SET @b=@b+1;
SELECT a,@b;
END
SET @b=1;
CALL temp();
调用存储过程:CALL sp_name(参数)
删除存储过程:drop procedure sp_name
修改存储过程:alter procedure sp_name
函数的创建
create function 函数名([参数列表]) returns 数据类型
begin
sql语句;
return 值;
end;
例子
– 无参的函数
create function myselect3() returns int
begin
declare c int;
select id from class where cname="python" into c;
return c;
end;
调用:select myselect3();
– 带传参的函数
create function myselect5(name varchar(15)) returns int
begin
declare c int;
select id from class where cname=name into c;
return c;
end;
调用:select myselect5(“python”);
select * from class where id=myselect5(“python”);
函数修改:alter function 函数名 选项
函数的删除:drop function 函数名
java总结文档大全
提取码:p0ed ***