首页 新闻 会员 周边 捐助

mysql 数据库查询

0
悬赏园豆:20 [已解决问题] 解决于 2013-06-20 19:50

创建一个对顾客表customer的姓名列(nam)进行模糊检索的存储过程,将取得的顾客件数通过输出参数p_cnt返回。命名为sp_search_customer。参数省略时,取得表customer的所有数据。

表customer的成员域名

域    名

数 据 类 型

说    明

mid

CHAR(5)

用户ID(主键)

nam

VARCHAR(20)

用户名

birth

DATE

生日

sex

CHAR(1)

性别(0:男,1:女。默认为0)

海边拾贝壳的人的主页 海边拾贝壳的人 | 初学一级 | 园豆:166
提问于:2013-06-18 22:46
< >
分享
最佳答案
0

不明白你的输出需求。

我的大概理解是下面这样。

DELIMITER //
DROP PROCEDURE IF EXISTS sp_search_customer//
CREATE PROCEDURE sp_search_customer (IN p_name VARCHAR(20),OUT p_cnt INT)
BEGIN

IF (p_name IS NULL) THEN
SELECT * FROM customer;
END IF;
IF (p_name IS NOT NULL) THEN
SELECT COUNT(*) INTO p_cnt FROM customer WHERE INSTR(nam,p_name) > 0;
END IF;

END //

收获园豆:20
Wolfe Yu | 菜鸟二级 |园豆:434 | 2013-06-19 09:46

谢谢,您的回答是我比较满意的

海边拾贝壳的人 | 园豆:166 (初学一级) | 2013-06-20 19:29
其他回答(1)
0

我认为楼上的做法是对的。

还有,

创建一个存储过程

1. 输入模糊查询的名字,返回得到的客户个数

2. 不输入名字,返回这个客户表的数据,

我认为,这返回了两个不容类型的数据,应该很实现。要是写两个存储过程,分别返回楼主所说的两个类型数据,再在楼主的真正业务逻辑里面,根据不同情况分别调用会好一点呢?

CodingStar | 园豆:213 (菜鸟二级) | 2013-06-19 13:14

谢谢你的建议

支持(0) 反对(0) 海边拾贝壳的人 | 园豆:166 (初学一级) | 2013-06-20 19:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册