MySQL的存储过程

王-先生 2024-08-03 14:05:03 阅读 64

MySQL的存储过程

存储过程的概念

完成特定功能的sql语句的集合。把定义好的sql集合在一个特定的sql函数中每次执行调用函数即可。还可以实现传参的调用。

存储过程的作用

执行速度比sql语句执行的速度更快,执行的效率也更高。

客户端可以随时调用发放,也可以随时修改。

可以对数据库内做任何操作。

存储过程的语法

delimiter $$

#delimiter开始和结束的语法,$$标志位,可以自定义不要用汉字,也不要数字开头,不能使用特殊字符开头

create procedure testl()

FBEGIN

select * from infol;

END SS

delimiter

#查看的两种方式

show procedure status where db='xy102';

show procedure status like '%test1%';#存储过程的名称

call test2 #按顺序执行,

存储过程怎么传参

IN 传入参数,调用者向存储过程传入值

out 输出参数 存储过程向调用者传出值,可以是多个值

ssdelimiter $$

create procedure test4(out num int)

BEGINset

num=100;

end $$

ssdelimiter;

call test4(@num)

select @num;

create table info2(id int(4));

insert into info2 value(@num);

INOUT 输入输出 既可以表示存储过程向调用者传出,也可以表示用户向存储

在存储过程中无需加@

delimiter $$

create procedure test3(inout high int)

BEGIN

  set high=(high+10);

end $$

delimiter;

call test2(@high);

set @high=185;

update info1 set high=@high where id = 2;

控制语句

REATE TABLE orders (

  order_id INT PRIMARY KEY,

  customer_id INT,

  order_date DATE,

  total_amount DECIMAL(10, 2)

);

#订单表

CREATE TABLE order_items (

  order_item_id INT PRIMARY KEY,

  order_id INT,

  product_id INT,

  quantity INT,

  price DECIMAL(10, 2)

);

#订单货表

INSERT INTO orders (order_id, customer_id, order_date, total_amount) VALUES

(1, 101, '2024-07-20', 0.00),

(2, 102, '2024-07-21', 0.00);

INSERT INTO order_items (order_item_id, order_id, product_id, quantity, price) VALUES

(1, 1, 1001, 2, 50.00),

(2, 1, 1002, 1, 30.00),

(3, 2, 1001, 1, 50.00),

(4, 2, 1003, 3, 20.00);

select sum(quantity * price)from order_items where order_id = 1;

select sum(quantity * price)from order_items where order_id = 2;

delimiter $$

create procedure info1(inout price int)

BEGIN

  set price=(select sum(quantity * price)from order_items where order_id = 1);

end $$

delimiter;

select @price

call info1 (@price)

set @price=order_items

update info8 set total_amount=@price where id =1

1



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。