mysql存储过程怎么关 mysql存储过程是什么意思

关于mysql存储过程的问题

下面是一个最简单的MySQL存储过程,实现两个数相加

潮阳ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

delimiter $$

create procedure proc_add(in a int,in b int)

begin

declare c int;

if a is null then

set a = 0;

end if;

if b is null then

set b = 0;

end if;

set c = a + b;

select c;

end$$

delimiter ;

需要特别注意的是

1. declare语句只能放在存储过程的开始位置,放在后面就会报错

2. if 语句的后面必须有then,但是不需要begin,在if结束时需要end if

3. 判断是否为NULL倒是和MSSQL一样都有IS NULL

4. delimiter是定界符的意思在结束的end后面要添加定界符

5. end if之后必须跟分号,否则语法错误

下面是一个较常见的场景,判断表中某列是否存在某值,如果存在执行某操作

delimiter $$

create procedure proc_add_book(in $bookName varchar(200),in $price float)

begin

declare $existsFlag int default 0;

select bookId into $existsFlag from book where bookName = $bookName limit 1;

if bookId 0 then

#if not exists (select * from book where bookNumber = $bookName) then

insert into book(bookNumber,price) values($bookName,$price);

end if;

end$$

delimiter ;

需要注意的是不能用if exists;exists可以在where后面或者在create object是使用,但是在if语句中不可以使用,只能用变通的方法。

while语句也需要注意,下面是一个while的简单应用:

delimiter $$

create procedure proc_add_books_looply(in $bookName varchar(200),in $price float,in $insertTimes INT)

begin

while $insertTimes0 do

insert into book (bookName,price) values($bookName,$price);

end while;

end$$

delimiter ;

可以看到while后面跟条件,条件后面要跟一个do,在while循环体结束之后需要end while并以分号结束。

以上是一些简单的总结,希望有用。

mysql 存储过程 是什么意思

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。

存储过程通常有以下优点:

存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。

存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。

存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。

存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

MySQL存储过程创建的格式如下:

CREATE PROCEDURE 过程名 ([过程参数[,...]])

[特性 ...] 过程体

举例代码如下:

CREATE PROCEDURE proc1(OUT s int)  

BEGIN 

SELECT COUNT(*) INTO s FROM user;  

END

存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。

过程体的开始与结束使用BEGIN与END进行标识。

注意:MySQL在5.0以前并不支持存储过程

mysql数据库存储过程问题,求大师指教

CREATE PROCEDURE PRO1()

BEGIN

DECLARE done INT DEFAULT 0;

DECLARE a CHAR(3);

DECLARE cur1 CURSOR FOR SELECT data FROM test.data1;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN cur1;

REPEAT

FETCH cur1 INTO a;

CASE FLOOR(1 + (RAND() *3))

WHEN 1 THEN INSERT INTO T_1 VALUES(a);

WHEN 2 THEN INSERT INTO T_2 VALUES(a);

WHEN 3 THEN INSERT INTO T_3 VALUES(a);

END;

UNTIL done END REPEAT;

CLOSE cur1;

END

MySql的存储过程

SELECT VALUE INTO V_VALUE FROM TABLENAME WHERE ID = p_id ;

V_VALUE := V_VALUE + P_NUM;

UPDATE TABLENAME SET VALUE = V_VALUE WHERE ID = p_id ;


文章名称:mysql存储过程怎么关 mysql存储过程是什么意思
标题链接:http://azwzsj.com/article/doseeps.html