存储过程中的SQL语句集(StoredP

05/05 19:23:23 来源网站:辅助卡盟网

更改存储过程

句型:

ALTER PROCEDURE proc_name [characteristic ...]
characteristic: {
    COMMENT "string"
  | LANGUAGE SQL
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
}

ALTERPROCEDURE 语句用于更改存储过程的个别特征。 如果要改变存储过程的内容,可以先删除原来的存储过程,然后再新建一个同名的存储过程。

删除存储过程

句型:

DROP PROCEDURE [ IF EXISTS ] proc_name

比如删除student_procedure:

mysql> DROP PROCEDURE student_procedure;
Query OK, 0 rows affected
mysql> CALL student_procedure(38, @num);
1305 - PROCEDURE student_procedure does not exist

流程控制语句IF语句

句型:

IF 判断条件 THEN 处理语句
    [ELSEIF 判断条件 THEN 处理语句]...
    [ELSE 处理语句]
END IF

例子:

CREATE PROCEDURE test1(IN sex TINYINT)
BEGIN
	IF sex=1 THEN SET @sex="男";
	ELSEIF sex=0 THEN SET @sex="女";
	ELSE SET @sex="未知";
	END IF;
END;

CASE语句

CASE语句有两种写法:

句型一:

CASE 值
    WHEN 值1 THEN 处理语句
    [WHEN 值2 THEN 处理语句]...
    [ELSE 处理语句]
END CASE

句型二:

CASE
    WHEN 条件判断 THEN 处理语句
    [WHEN 条件判断 THEN 处理语句] ...
    [ELSE 处理语句]
END CASE

例子:

-- 写法1
CREATE PROCEDURE test2(IN sex TINYINT)
BEGIN
	CASE sex
	WHEN 1 THEN SET @sex="男";
	WHEN 0 THEN SET @sex="女";
	ELSE SET @sex="未知";
	END CASE;
END;
-- 写法2
CREATE PROCEDURE test3(IN sex TINYINT)
BEGIN
	CASE 
	WHEN sex=1 THEN SET @sex="男";
	WHEN sex=0 THEN SET @sex="女";
	ELSE SET @sex="未知";
	END CASE;
END;

循环句

LOOP 循环是一个无限循环。 通常,它需要与LEAVE语句和ITERATE语句一起使用。 LEAVE语句表示跳出循环(类似于Java中的break),ITERATE语句表示跳出本次循环(类似于Java中的continue)。

句型:

[别名:]LOOP
    处理逻辑
END LOOP [别名]

例子:

CREATE PROCEDURE test4()
BEGIN
	SET @num=0;
	add_num:LOOP
		SET @num=@num+1;
		IF @num=10 THEN LEAVE add_num;
		END IF;
	END LOOP add_num;
END;

    暂无相关资讯
存储过程中的SQL语句集(StoredP