Mysql数据库储存过程等

存储过程

存储过程(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 p0ed***

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值