mysql 存储过程 prepare into_MySQL5的存储过程详细实例

本文章来介绍一下关于mysql5的新特性存储过程了,在mysql5之前是没有存储过程这一说的,下面我们来看看mysql5存储过程的用法。

MySQL 5.0

新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的。简单的来说是介绍了“存储过程、触发器、视图、信息架构视图

格式:

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

[特性 ...] 过程体

CREATE FUNCTION 函数名 ([函数参数[,...]])

RETURNS 返回类型

[特性 ...] 函数体

过程参数:

[ IN | OUT | INOUT ] 参数名 参数类型

函数参数:

参数名 参数类型

返回类型:

有效的MySQL数据类型即可

特性:

LANGUAGE SQL

| [NOT] DETERMINISTIC

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

| SQL SECURITY { DEFINER | INVOKER }

| COMMENT 'string'

过程体/函数体:格式如下:

BEGIN

有效的SQL语句

END

实例

DELIMITER $$

DROP PROCEDURE IF EXISTS `spTest` $$

CREATE PROCEDURE `spTest`(p_title VARCHAR(200), p_description TEXT)

DETERMINISTIC

BEGIN

INSERT INTO category (title, description)

VALUES (p_title, p_description);

END $$

DELIMITER ;

其中DELIMITER是用来决定SQL分隔符号的,在写Stored Procedure前,要先把预设的分号换掉,写完 Stored Procedure 的 routine_body 后,再回复成预设的分号。

--删除drop procedure if exists up_common_select

--创建

CREATE PROCEDURE `up_common_select`(

in t_name varchar(50)

)

begin

declare v_sql varchar(500);

set v_sql= concat('select * from ',t_name);

select v_sql;

--

--注意:prepare(预处理)execute stmt using @var,只能跟@,declare和传入的变量不行!!!

set @v_sql=v_sql;

prepare stmt from @v_sql;

EXECUTE stmt ;

deallocate prepare stmt;

end;

--调用

call up_common_select('admin_authority');

#############################################

#注意事项###########

1 mysql5.0.13之后支持在存储过程中调用prepare

2, prepare stmt from 'select * from ?'; (错)

mysql5.0.24,prepare尚不支持 表名做变量!

解决方案:用 contat()函数,组合字符串

3. execute stmt [using @var,@var2]

必须是@var形式的变量,传入的参数变量,declare变量不行

4. deallocate prepare stmt; 显式的释放prepare,如果不释放,mysql会释放,!

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值