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

解决方案 »

  1.   

    select * from 安徽省医院 where 所在城市='合肥市'安徽省医院  是一个表名?
      

  2.   

    这个用存储过程干啥?  直接sql就行了啊你的合肥市那块  是变量啊~   直接在前台代码中组好  传到DB中就行了
      

  3.   

    以为以后要做全国的所有省,总不能那么多sql语句吧不能直接建一个存储过程吗?
      

  4.   

    god  你页面上的合肥是可以取的到的啦 
    你把你的过程做一个入参啊   不就搞定啦
      

  5.   


    declare
    v_sql varchar2(500);
    v_sql := 'select * from '||tablenm||' where city='||v_city;
    execute immediate v_sql;
      

  6.   

    楼主,用游标:
    CREATE TABLE yixl_hospital_info_t
    (seqno NUMBER(4),
    hosp_name VARCHAR2(100),
    city_name VARCHAR2(100));DELETE yixl_hospital_info_t;
    insert INTO yixl_hospital_info_t values (1 ,'AnHui Hosp'         ,  'HeFei');
    insert INTO yixl_hospital_info_t values (74,'BengBu 1st Hosp'    ,  'BengBu');
    insert INTO yixl_hospital_info_t values (75,'BengBu 2nd Hosp'    ,  'BengBu');
    insert INTO yixl_hospital_info_t values (76,'BengBu 3rd Hosp'    ,  'BengBu');
    insert INTO yixl_hospital_info_t values (37,'HeFei Female Hosp'  ,  'HeFei');
    insert INTO yixl_hospital_info_t values (38,'HeFei Heart Hosp'   ,  'HeFei');
    insert INTO yixl_hospital_info_t values (39,'HeFei Fang Hosp'    ,  'HeFei');
    insert INTO yixl_hospital_info_t values (40,'Hefei Herblic Hosp' ,  'HeFei');
    COMMIT;create or replace procedure yixl_test
    AS
      host_info yixl_hospital_info_t%ROWTYPE;
      CURSOR cur_hosp IS 
      SELECT * FROM yixl_hospital_info_t WHERE city_name = 'HeFei';
    begin  
      OPEN cur_hosp;
      LOOP
        FETCH cur_hosp INTO host_info;
        EXIT WHEN cur_hosp%NOTFOUND;
        
        dbms_output.put_line(host_info.hosp_name);
      end LOOP;
      CLOSE cur_hosp;
    end;
      

  7.   

    使用带参数的游标,例如:
    declare
     cursor 游标名(城市名变量 varchar2) is select 序号,医院,城市名 from 表 where 城市名字段 = 城市名变量;
    begin
      for var_exp in 游标名(要传入的城市名) loop
      dbms_output.put_line(游标名.序号||':'||游标名.医院名);
      end loop;
    end;