创建一个对顾客表customer的姓名列(nam)进行模糊检索的存储过程,将取得的顾客件数通过输出参数p_cnt返回。命名为sp_search_customer。参数省略时,取得表customer的所有数据。
表customer的成员域名
域 名 |
数 据 类 型 |
说 明 |
mid |
CHAR(5) |
用户ID(主键) |
nam |
VARCHAR(20) |
用户名 |
birth |
DATE |
生日 |
sex |
CHAR(1) |
性别(0:男,1:女。默认为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 //
谢谢,您的回答是我比较满意的
我认为楼上的做法是对的。
还有,
创建一个存储过程
1. 输入模糊查询的名字,返回得到的客户个数
2. 不输入名字,返回这个客户表的数据,
我认为,这返回了两个不容类型的数据,应该很实现。要是写两个存储过程,分别返回楼主所说的两个类型数据,再在楼主的真正业务逻辑里面,根据不同情况分别调用会好一点呢?
谢谢你的建议