如下表:
  序号 医院名称 所在城市
  1 安徽省立医院 合肥市
  74 蚌埠市第一人民医院 蚌埠市
  75 蚌埠市第二人民医院 蚌埠市
  76 蚌埠市第三人民医院 蚌埠市
  37 合肥丽人女子医院 合肥市
  38 合肥心血管病医院 合肥市
  39 合肥东方医院 合肥市
  40 合肥市中医医院 合肥市
我想写一个存储过程,当用户在页面上输入所要找的城市比如合肥市,就能找出所以合肥市的医院。
之前我是这样做的:
CREATE PROCEDURE 安徽合肥市医院 AS  
select * from 安徽省医院 where 所在城市='合肥市'不过要是每个市都要这样做,不是要建好多存储过程。请大家帮忙写用一个存储过程就能实现的。

解决方案 »

  1.   

    首先,这不用存储过程吧?就简单的查询而已啊?
    然后,我看到你的SQL:select * from 安徽省医院 where 所在城市='合肥市'
    你是用安徽省医院一个表,然后江苏省医院一个表?
    为什么不一个医院表搞定,然后添加字段区分省市?
    不是实现过程的问题,而是你设计本身有问题了。
      

  2.   


    全国有多少医院?就算以后真的多到影响查询了,你在省份上建分区索引不就 OK 了?你的存储过程可以这样写create or replace procedure p_qry_hospitalname
    (
        in_str_provincename     in    varchar2,
        in_str_areaname         in    varchar2
        out_cur_hosplist        out   sys_refcursor
    )
    as
    begin
        open out_cur_hosplist for 
        select 医院名称 from 医院总表 
          where 省份 = in_str_provincename
           and 地市 = in_str_areanem;
    end p_qry_hospitalname;