mysql call_mysql call用法:调用存储过程

在mysql中使用 call语句调用存储过程,是很经常的事,今天分享一段代码,供朋友们参考。

代码:

mysql> CREATE TABLE titles ( //创建mysql表

-> titleID int(11),

-> 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),

-> PRIMARY KEY (titleID)

-> );

Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO titles 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');

Query OK, 6 rows affected (0.00 sec)

Records: 6 Duplicates: 0 Warnings: 0

mysql> CREATE TABLE publishers ( //创建mysql表

-> 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;

Query OK, 0 rows affected (0.01 sec)

mysql> 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');

Query OK, 5 rows affected (0.00 sec)

Records: 5 Duplicates: 0 Warnings: 0

mysql> delimiter $$

mysql>

mysql> create PROCEDURE get_title(IN id INT) //创建存储过程

-> BEGIN

-> SELECT title, subtitle, publName FROM titles, publishers WHERE titleID=id AND titles.publID = publishers.publID;

-> END$$

Query OK, 0 rows affected (0.00 sec)

mysql> create PROCEDURE half(IN a INT, OUT b INT) //创建存储过程

-> BEGIN

-> SET b = a/2;

-> END$$

mysql> delimiter ;

mysql> CALL get_title(1); //调用存储过程

+-------+--------------+----------+

| title | subtitle | publName |

+-------+--------------+----------+

| Linux | Installation | A |

+-------+--------------+----------+

1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

mysql> drop table publishers; //删除表publishers

Query OK, 0 rows affected (0.00 sec)

mysql> drop table titles; //删除表titles

Query OK, 0 rows affected (0.00 sec)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 存储过程是一种预先编译好的 SQL 代码块,可以通过单个调用执行多个 SQL 语句。存储过程可以接收参数,可以使用条件、循环等语句实现复杂的业务逻辑。下面是 MySQL 存储过程的基本用法: 1. 创建存储过程 使用 CREATE PROCEDURE 语句创建存储过程,语法如下: ``` CREATE PROCEDURE procedure_name ([IN|OUT|INOUT] parameter_name data_type) BEGIN -- 存储过程的 SQL 语句 END; ``` 其中,procedure_name 为存储过程名,parameter_name 为参数名,data_type 为参数数据类型,可以是 MySQL 支持的任何数据类型。 2. 执行存储过程 使用 CALL 语句执行存储过程,语法如下: ``` CALL procedure_name(parameter_value); ``` 其中,procedure_name 为存储过程名,parameter_value 为参数值,可以是一个常量、变量或表达式。 3. 删除存储过程 使用 DROP PROCEDURE 语句删除存储过程,语法如下: ``` DROP PROCEDURE procedure_name; ``` 其中,procedure_name 为存储过程名。 4. 示例 下面是一个简单的 MySQL 存储过程示例,实现了对用户表的插入操作: ``` CREATE PROCEDURE insert_user(IN name VARCHAR(50), IN age INT, IN gender VARCHAR(10)) BEGIN INSERT INTO user(name, age, gender) VALUES(name, age, gender); END; CALL insert_user('张三', 20, '男'); ``` 该存储过程接收三个参数,分别为 name、age 和 gender,将这些参数插入到 user 表中。最后使用 CALL 语句调用存储过程,插入一条记录。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值