在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这里用一个实例来演示PostgreSQL存储过程如何返回数据集。 1、首先准备数据表 复制代码 代码如下: //member_category create table member_category(id serial, name text, discount_rate real, base_integral integer); alter table member_category add primary key(id); alter table member_category add check(name<>''); //member alter table member add onaccount int; 2、插入测试数据 复制代码 代码如下: insert into member_category(name, discount_rate, base_integral) values('白金会员', 6.5, 10000); insert into member_category(name, discount_rate, base_integral) values('高级会员', 7.5, 1000); insert into member_category(name, discount_rate, base_integral) values('中级会员', 8.5, 100); insert into member_category(name, discount_rate, base_integral) values('普通会员', 9.5, 10); insert into member(member_num, name, category_id, account, integral, phone, birthday, qq, email, onaccount, status, address, tip, start_date, valid_date, password, store_name) values('1000001', 'wuyilun', 1, 100000.00, 100000, 18814117777, '1990-12-12', 12345678, '[email protected]', 0, 1, 'B3-440', '超白金会员,一切免单', '2014-01-15', 1000000, 12345, '华南理工门店'); 3、创建存储过程 复制代码 代码如下: --调用存储过程f_get_member_info, 返回会员的所有信息 --memberType:会员类型 status:会员状态 findCondition:查询条件(卡号/电话/姓名) store_name:商店名称 create or replace function f_get_member_info(memberType int, status int, findCondition text, store_name text) returns setof record as $$ declare rec record; begin for rec in EXECUTE 'select m.member_num, m.name, m_t.name, m_t.discount_rate, m.account, m.integral, m.phone, m.birthday, m.qq, m.email, m.onAccount, m.status, m.address, m.tip, m.start_date, m.valid_date, m.store_name from member m, member_category m_t where m.category_id = m_t.id and m_t.id = '|| memberType ||' and m.status = '|| status ||' and m.store_name = '''|| store_name ||''' and (m.member_num like ''%'|| findCondition ||'%'' or m.name like ''%'|| findCondition ||'%'' or m.phone like ''%'|| findCondition ||'%'');' loop return next rec; end loop; return; end $$ language 'plpgsql'; 4、调用存储过程 复制代码 代码如下: --调用存储过程f_get_member_info示例 select * from f_get_member_info(4, 1, '', '华南理工门店') as member(member_num text,mname text,name text,discount_rate real,account numeric(16,2),integral int,phone text,birthday date,qq int,email text,onAccount int,status int,address text,tip text,start_date date,valid_date int,store_nam text); 5、测试结果 |
请发表评论