根据消费定额生成菜单的算法(原创)
2009-08-26 10:59
204 查看
在去年一个实验性项目中有这样一个问题,饭店根据顾客消费意愿进行菜单自动生成,如:699元套餐、899元套餐等。菜品类型有凉菜、热菜、蒸菜等等,具体需求不详细描述。关键是一个根据消费金额自动生成菜单的算法。可惜当时的代码找不到了。
今天在论坛中又遇到一个类似问题,正好可用以回顾。如下:
表结构:
SQL> create table t_money(id int primary key,amount int not null);
Table created
Executed in 0.468 seconds
插入数据:
Code
create or replace procedure P_test(O_str out varchar2)exp user1/pwd@server owner=user1 file=c:\file.dmp
imp user2/pwd@server fromuser=user1 touser=user2 file=c:\file.dmp
as
v_str varchar2(20):=',';
v_id number;
v_count number;
v_tmp number :=0;
v_money number :=0;
begin
select count(0) into v_count from t_money;
loop
select count(0) into v_count from t_money where not instr(v_str,',' || id || ',')>0 and amount <= 10-v_money;
if v_count = 0 then
exit;
-- or restart
end if;
select id,amount into v_id,v_tmp from
(select id,amount from t_money where not instr(v_str,',' || id || ',')>0 and amount <= 10-v_money order by dbms_random.value)
where rownum <2;
v_money := v_money + v_tmp;
v_str := v_str || v_id ||',';
exit when v_money =10;
end loop;
O_str := v_str;
-- Error
end;
结果:,7,9,10,3,
今天在论坛中又遇到一个类似问题,正好可用以回顾。如下:
表结构:
SQL> create table t_money(id int primary key,amount int not null);
Table created
Executed in 0.468 seconds
插入数据:
Code
create or replace procedure P_test(O_str out varchar2)exp user1/pwd@server owner=user1 file=c:\file.dmp
imp user2/pwd@server fromuser=user1 touser=user2 file=c:\file.dmp
as
v_str varchar2(20):=',';
v_id number;
v_count number;
v_tmp number :=0;
v_money number :=0;
begin
select count(0) into v_count from t_money;
loop
select count(0) into v_count from t_money where not instr(v_str,',' || id || ',')>0 and amount <= 10-v_money;
if v_count = 0 then
exit;
-- or restart
end if;
select id,amount into v_id,v_tmp from
(select id,amount from t_money where not instr(v_str,',' || id || ',')>0 and amount <= 10-v_money order by dbms_random.value)
where rownum <2;
v_money := v_money + v_tmp;
v_str := v_str || v_id ||',';
exit when v_money =10;
end loop;
O_str := v_str;
-- Error
end;
结果:,7,9,10,3,
相关文章推荐
- 根据用户名生成注册码的算法
- 订单号消费码生成(线性同余算法)
- jquery树形ztree插件根据文件目录路径动态生成树形list的算法
- 根据空间线上的两点生成圆柱体 算法
- C++之根据组合遍历顺序生成二叉树(25)---《那些奇怪的算法》
- 【算法】最小生成树算法(prim算法)【原创技术】
- 根据Mahout FPGrowth算法生成的结果计算关联规则项
- 根据用户名生成注册码的算法
- 根据表中数据动态生成菜单(三)
- C++之根据组合遍历顺序生成二叉树(25)---《那些奇怪的算法》
- DevExpress 中根据数据库字典动态生成卡式菜单
- 根据sitemap配置生成无限级跨frame菜单的实现方式(含100%脚本源码参考
- 动软.net代码生成器自定义模板(根据自己需要来生成数据访问类)及牛腩的动软的简单使用(原创)
- 根据数据库的记录动态生成菜单并添加相应的单击事件
- 根据数组生成联动菜单树
- 根据sitemap配置生成无限级跨frame菜单的实现方式(含100%脚本源码参考)
- digest 用户认证 response生成算法(原创)
- jquery 左侧多级菜单 根据xml文件自动生成
- 根据sitemap配置生成无限级跨frame菜单的实现方式(含100%脚本源码参考)
- [徒步天下原创]使用EXCEL VBA完成校验码生成算法(源代码)