首页 > 编程知识 正文

mysql数据库存储过程例题,sql存储过程简单例题

时间:2023-12-27 22:28:07 阅读:327311 作者:PPVS

本文目录一览:

mysql 存储过程

.      关于MySQL的存储过程

存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。

MySQL存储过程的创建

(1). 格式

MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,...]])

[特性 ...] 过程体

这里先举个例子:

mysql DELIMITER //

mysql CREATE PROCEDURE proc1(OUT s int)

- BEGIN

- SELECT COUNT(*) INTO s FROM user;

- END

- //

mysql DELIMITER ;

 

注:

(1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。

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

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

mysql存储过程实例

你是指‘01’ 想动态的可以用别的值? 可以在创建存储过程时 用in ,也就是调用存储过程是传入参数

大概像这个样子create procedure sp_test(in a char(50)),然后将'01'换为a

mysql 存储过程总结(一)

1、存储过程定义:

存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

2、特点:

封装,复用 : 可以把某一业务SQL封装在存储过程中,需要用到 的时候直接调用即可。

可以接收参数,也可以返回数据 :再存储过程中,可以传递参数,也可以接收返回 值。

减少网络交互,效率提升 : 如果涉及到多条SQL,每执行一次都是一次网络传 输。 而如果封装在存储过程中,我们只需要网络交互一次可能就可以了。

3、基本语法

(1)创建:

(2)调用:

(3)查看:

(4)删除

注意: 在命令行中,执行创建存储过程的SQL时,需要通过关键字 delimiter 指定SQL语句的 结束符。

Mysql存储过程中游标的用法实例

本文实例讲述了Mysql存储过程中游标的用法。分享给大家供大家参考。具体如下:

1.

批量插入商户路由关联数据:

DELIMITER

$$

USE

`mmm_mac`$$

DROP

PROCEDURE

IF

EXISTS

`批量插入商户路由关联数据`$$

CREATE

DEFINER=`root`@`%`

PROCEDURE

`批量插入商户路由关联数据`()

BEGIN

DECLARE

v_partner_no

VARCHAR(32);

DECLARE

v_partner_id

INT(11);

DECLARE

v_sc_pid

INT(11);

DECLARE

v_mac_no

VARCHAR(32);

DECLARE

v_mac_addr

VARCHAR(32);

DECLARE

n_mac_no

BIGINT;

DECLARE

n_mac_addr

BIGINT;

DECLARE

n_mac_addr_str

VARCHAR(32);

DECLARE

done

INT;

#取得商户数据

DECLARE

cur_partnerlist

CURSOR

FOR

SELECT

comp_id,

partner_no,

sc_pid

FROM

mmm_partner.anl_partner;

SET

n_mac_no

=

100000000;

SET

n_mac_addr

=

1000000000;

OPEN

cur_partnerlist;

REPEAT

FETCH

cur_partnerlist

INTO

v_partner_id,v_partner_no,v_sc_pid;

SET

v_mac_no

=

CONCAT('MAC',v_sc_pid,n_mac_no);

SET

n_mac_addr_str

=

CONCAT(SUBSTR(n_mac_addr,1,2),':',SUBSTR(n_mac_addr,3,2),':',SUBSTR(n_mac_addr,5,2),':',SUBSTR(n_mac_addr,7,2),':',SUBSTR(n_mac_addr,9,2));

SET

v_mac_addr

=

CONCAT('CC:',n_mac_addr_str);

SET

n_mac_no

=

n_mac_no

+

1;

SET

n_mac_addr

=

n_mac_addr

+

1;

#向t_machine_sc_config表中插入商户关联路由的数据

#insert

into

t_machine_sc_config(mac_no,

partner_no,

partner_id,

sc_pid,

mac_addr,

comp_id,

is_lock)

values('MAC2016000000001','44060430603381',1,4403,'C8:87:18:AB:79:66',1,1);

INSERT

INTO

t_machine_sc_config(mac_no,

partner_no,

partner_id,

sc_pid,

mac_addr,

comp_id,

is_lock)

VALUES(v_mac_no,v_partner_no,v_partner_id,v_sc_pid,v_mac_addr,1,1);

UNTIL

END

REPEAT;

CLOSE

cur_partnerlist;

END$$

DELIMITER

;

2.

更新商户表:

DELIMITER

$$

USE

`mmm_partner`$$

DROP

PROCEDURE

IF

EXISTS

`更新商户表`$$

CREATE

DEFINER=`root`@`%`

PROCEDURE

`更新商户表`()

BEGIN

DECLARE

v_partner_no

VARCHAR(32);

DECLARE

vpartner_no

VARCHAR(32);

DECLARE

v_partner_id

VARCHAR(32);

DECLARE

n

BIGINT;

DECLARE

partnerid_list

CURSOR

FOR

SELECT

comp_id

FROM

100msh_partner.anl_partner

WHERE

TRIM(partner_no)

=

'';

SET

vpartner_no

=

'2015415parno';

SET

n

=

10000000;

OPEN

partnerid_list;

REPEAT

FETCH

partnerid_list

INTO

v_partner_id;

SET

v_partner_no

=

CONCAT(vpartner_no,n);

SET

n

=

n

+

1;

UPDATE

mmm_partner.anl_partner

SET

partner_no

=

v_partner_no

WHERE

comp_id

=

v_partner_id;

UNTIL

END

REPEAT;

CLOSE

partnerid_list;

END$$

DELIMITER

;

希望本文所述对大家的mysql数据库程序设计有所帮助。

帮忙写一个mysql存储过程,要求如下

要求如下要求A:输入表名、建立对应副表,其中副表要有额外的记录主键(ID_ROW_SEQ_NO)自增长,额外字段,更新时间(LG_CHG_TIME),操作标记,记录状态,来源系统

要求B:建立表名,建立触发器带有增删改功能将捕获变化数据写入对应副表,主表添加一条记录,副表中增加一条记录,标记“I”,主表删除一条记录,副表中增加一条记录,标记“D”,主表更新一条记录,副表中增加一条记录,标记“U”

C要求:操作A表触发B表

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。