加入收藏 | 设为首页 | 会员中心 | 我要投稿 上海站长网 (https://www.021zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql 存储过程和函数

发布时间:2022-10-14 04:01:04 所属栏目:MySql教程 来源:网络
导读: 一个存储程序是可以被存储在服务器中的一套SQL语句。可以通过客户端用 创建一个存储过程或函数。在客户端通过 调用所创建的存数过程或函数。
语法:
创建存储子程序:
CREATE PROCEDURE sp

一个存储程序是可以被存储在服务器中的一套SQL语句。可以通过客户端用 创建一个存储过程或函数。在客户端通过 调用所创建的存数过程或函数。

语法:

创建存储子程序:

CREATE PROCEDURE sp_name ([proc_parameter[,...]])

[characteristic ...] routine_body

CREATE FUNCTION sp_name ([func_parameter[,...]])

RETURNS type

[characteristic ...] routine_body

proc_parameter:

[ IN | OUT | INOUT ] param_name type

func_parameter:

param_name type

type:

Any valid MySQL data type

characteristic:

LANGUAGE SQL

| [NOT] DETERMINISTIC

| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

| SQL SECURITY { DEFINER | INVOKER }

| COMMENT 'string'

routine_body:

Valid SQL procedure statement or statements

默认地,子程序与当前数据库关联。要明确地把子程序与一个给定数据库关联起来mysql语句,可以在创建子程序的时候指定其名字为db_name.sp_name。在 程序被定义的时候,用mysql客户端delimiter命令来把语句定界符从 ;变为//。这就允许用在 程序体中的;定界符被传递到服务器而不是被mysql自己来解释。例如:

mysql> delimiter //

mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)

-> BEGIN

-> SELECT COUNT(*) INTO param1 FROM t;

-> END

-> //

Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> CALL simpleproc(@a);

Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @a;

+------+

| @a |

+------+

| 3 |

+------+

1 row in set (0.00 sec)

(编辑:上海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!