收藏一个存储过程

题目是网上看到的:
表结构如下:
create table t_money(id int primary key,amount int not null);// id 是序列号,amount是金额
对如下数据进行查询:
+----+--------+
| id | amount |
+----+--------+
|  1 |      2 |
|  2 |      2 |
|  3 |      3 |
|  4 |      5 |
|  5 |      2 |
|  6 |      8 |
|  7 |      1 |
|  8 |      2 |
|  9 |      3 |
| 10 |      3 |
+----+--------+ 
从表中选取若干条数据,使得被选出来的几条数据的amount(金额)字段之和等于10,要求存储过程能返回被选取出来的数据的序列号。
算法举例:2+3+5=10 返回序列号:1,3,4   ;

解决存储过程为:
declare
  type tabletype is table of t_test%rowtype index by binary_integer;
  res   tabletype;
  row_1 binary_integer;
  sums  number;
  cal   varchar2(100);
  seq   varchar2(100);
begin
  select * bulk collect into res from t_test;
  for i in 1 .. 2 ** res.count loop
    sums := 0;
    cal  := '';
    seq  := '';
    for j in 1 .. 10 loop
      if (bitand(i, 2 ** (j - 1)) <> 0) then
        sums := sums + res(j).s;
        cal  := cal || res(j).s || '+';
        seq  := seq || res(j).t || ',';
        if (sums > 10) then
          exit;
        end if;
      end if;
    end loop;
    if (sums = 10) then
      cal := substr(cal, 1, length(cal) - 1);
      seq := substr(seq, 1, length(seq) - 1);
      dbms_output.put_line('结果是:' || cal || '=' || sums);
      dbms_output.put_line('序列是:' || seq);
      exit;
    end if;
  end loop;
end;

以备查

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22333206/viewspace-613311/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22333206/viewspace-613311/

实现收藏夹功能的过程可以使用MVC设计模式,使代码更加模块化和易于维护。 1. Model层:创建一个收藏夹的类,用于存储用户的收藏夹信息,包括收藏夹的名称、收藏夹中的网址等。 2. View层:创建一个网页,用于展示用户的收藏夹列表和收藏夹详情,包括收藏夹名称、网址、添加和删除收藏夹等操作。 3. Controller层:创建一个控制器类,用于处理收藏夹的增删改查等操作。在用户点击添加收藏夹或删除收藏夹时,控制器类接收用户请求并调用Model层的方法进行数据处理,然后再返回结果给View层进行展示。 具体实现过程如下: 1. 创建一个收藏夹的类,用于存储收藏夹信息。 ``` public class Favorite { private String name; // 收藏夹名称 private List<String> urls; // 收藏夹中的网址 // 构造函数 public Favorite(String name, List<String> urls) { this.name = name; this.urls = urls; } // getter和setter方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public List<String> getUrls() { return urls; } public void setUrls(List<String> urls) { this.urls = urls; } } ``` 2. 创建一个网页,用于展示用户的收藏夹列表和收藏夹详情。在网页中,用户可以添加收藏夹、删除收藏夹、添加网址、删除网址等操作。 3. 创建一个控制器类FavoriteController,用于处理用户的请求并调用Model层的方法进行数据处理。在控制器类中,可以定义添加收藏夹、删除收藏夹、添加网址、删除网址等方法。 ``` @Controller @RequestMapping("/favorite") public class FavoriteController { @Autowired private FavoriteService favoriteService; // 添加收藏夹 @PostMapping("/add") public String addFavorite(Favorite favorite) { favoriteService.addFavorite(favorite); return "redirect:/favorite/list"; } // 删除收藏夹 @PostMapping("/delete") public String deleteFavorite(String name) { favoriteService.deleteFavorite(name); return "redirect:/favorite/list"; } // 添加网址 @PostMapping("/addUrl") public String addUrl(String name, String url) { favoriteService.addUrl(name, url); return "redirect:/favorite/detail?name=" + name; } // 删除网址 @PostMapping("/deleteUrl") public String deleteUrl(String name, String url) { favoriteService.deleteUrl(name, url); return "redirect:/favorite/detail?name=" + name; } // 查询收藏夹列表 @GetMapping("/list") public String listFavorites(Model model) { List<Favorite> favorites = favoriteService.listFavorites(); model.addAttribute("favorites", favorites); return "favorite/list"; } // 查询收藏夹详情 @GetMapping("/detail") public String getFavorite(String name, Model model) { Favorite favorite = favoriteService.getFavorite(name); model.addAttribute("favorite", favorite); return "favorite/detail"; } } ``` 4. 创建一个Service层,用于封装数据处理的方法。在Service层中,可以定义添加收藏夹、删除收藏夹、添加网址、删除网址等方法,并调用DAO层的方法进行数据访问。 ``` @Service public class FavoriteService { @Autowired private FavoriteDao favoriteDao; // 添加收藏夹 public void addFavorite(Favorite favorite) { favoriteDao.addFavorite(favorite); } // 删除收藏夹 public void deleteFavorite(String name) { favoriteDao.deleteFavorite(name); } // 添加网址 public void addUrl(String name, String url) { favoriteDao.addUrl(name, url); } // 删除网址 public void deleteUrl(String name, String url) { favoriteDao.deleteUrl(name, url); } // 查询收藏夹列表 public List<Favorite> listFavorites() { return favoriteDao.listFavorites(); } // 查询收藏夹详情 public Favorite getFavorite(String name) { return favoriteDao.getFavorite(name); } } ``` 5. 创建一个DAO层,用于进行数据访问。在DAO层中,可以定义添加收藏夹、删除收藏夹、添加网址、删除网址等方法,并访问数据库进行数据操作。 ``` @Repository public class FavoriteDao { // 添加收藏夹 public void addFavorite(Favorite favorite) { // TODO: 添加收藏夹到数据库 } // 删除收藏夹 public void deleteFavorite(String name) { // TODO: 从数据库中删除收藏夹 } // 添加网址 public void addUrl(String name, String url) { // TODO: 在数据库中添加网址到指定收藏夹 } // 删除网址 public void deleteUrl(String name, String url) { // TODO: 在数据库中删除指定收藏夹中的指定网址 } // 查询收藏夹列表 public List<Favorite> listFavorites() { // TODO: 从数据库中查询所有收藏夹信息 return null; } // 查询收藏夹详情 public Favorite getFavorite(String name) { // TODO: 从数据库中查询指定收藏夹的信息 return null; } } ``` 以上就是使用MVC设计模式实现收藏夹功能的过程。需要注意的是,在实际开发中,需要根据具体业务需求进行代码的实现和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值