Mysql的存储过程的使用

Posted clc1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql的存储过程的使用相关的知识,希望对你有一定的参考价值。

mysql中创建存储过程procedure并且用call语句来调用是基本功

CREATE table title(
titleID int(11) PRIMARY KEY ,
title VARCHAR(100),
subtitle varchar(100),
edition TINYINT(4),
publID int(11),
catID int(11),
langID int(11),
 year int(11),
isbn varchar(20),
comment varchar(255),
ts timestamp,
authors varchar(255)
);

  

[SQL]
INSERT INTO title VALUES  
  (1,‘Linux‘,‘Installation‘,5,1,57,2,2000,NULL,NULL,‘2005-02-28 13:34:21‘,‘Michael‘),
  (2,‘Excel‘,NULL,NULL,2,3,NULL,2000,NULL,NULL,‘2005-02-28 13:34:22‘,‘David‘),
  (3,‘XML‘,NULL,NULL,1,2,NULL,1997,NULL,NULL,‘2005-02-28 13:34:22‘,‘Edwards‘),
  (4,‘php‘,NULL,NULL,3,6,NULL,2000,NULL,NULL,‘2005-02-28 13:34:22‘,‘Tom‘),                          
  (5,‘MySQL‘,‘‘,0,3,34,NULL,2000,‘‘,‘‘,‘2005-02-28 13:34:22‘,‘Paul‘),                         
  (6,‘Java‘,NULL,NULL,4,34,NULL,1999,NULL,NULL,‘2005-02-28 13:34:22‘,‘Tim‘);
受影响的行: 6
时间: 0.153s

  

[SQL]
CREATE TABLE publishers ( 
       publID int(11) NOT NULL auto_increment,
       publName varchar(60) collate latin1_german1_ci NOT NULL default ‘‘,
       ts timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
       PRIMARY KEY  (publID),
       KEY publName (publName)
     ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
受影响的行: 0
时间: 0.404s

  

[SQL]INSERT INTO publishers VALUES
      (1,‘A‘,‘2004-12-02 18:36:58‘),
      (2,‘Apress‘,‘2004-12-02 18:36:58‘),
      (3,‘New Riders‘,‘2004-12-02 18:36:58‘),
      (4,‘O‘Reilly & Associates‘,‘2004-12-02 18:36:58‘),
      (5,‘Hanser‘,‘2004-12-02 18:36:58‘);
受影响的行: 5
时间: 0.148s

  存储过程创建时间

[SQL]create PROCEDURE get_title(in id int)
BEGIN
SELECT title,subtitle,publName from title,publishers where titleID=id and titles.publID = publishers.publID;
       END

  

[SQL]create PROCEDURE half(in a int,out b int)
BEGIN
set b=a/2;
       END

受影响的行: 0
时间: 0.001s

  删除存储过程,发现写错了

[SQL]drop PROCEDURE get_title;
受影响的行: 0
时间: 0.006s

  重新创建过

[SQL]create PROCEDURE get_title(IN id INT)
     BEGIN
       SELECT title, subtitle, publName FROM title, publishers WHERE titleID=id AND title.publID = publishers.publID;
     END

受影响的行: 0
时间: 0.001s

  

查询数据库中的存储过程

方法一:

       select `name` from mysql.proc where db = ‘your_db_name‘ and `type` = ‘PROCEDURE‘

方法二:

         show procedure status;

查看存储过程或函数的创建代码

show create procedure proc_name;
show create function func_name;

查看一下触发器的创建代码

show CREATE PROCEDURE get_title;

调用用call get_title(1);

以上是关于Mysql的存储过程的使用的主要内容,如果未能解决你的问题,请参考以下文章

MySQL存储过程和游标

是否有任何 MySQL 工具可用于使用 GUI(而不是通过编写代码手动)修改存储过程?

怎么在mysql中查询已建立的存储过程

Mysql存储过程导出

为啥mysql创建存储函数,会是这样报错

MySQL 存储过程错误处理