如下表:序号 医院名称 所在城市
1 安徽省立医院 合肥市
74 蚌埠市第一人民医院 蚌埠市
75 蚌埠市第二人民医院 蚌埠市
76 蚌埠市第三人民医院 蚌埠市
37 合肥丽人女子医院 合肥市
38 合肥心血管病医院 合肥市
39 合肥东方医院 合肥市
40 合肥市中医医院 合肥市
我想写一个存储过程,当用户在页面上输入所要找的城市比如合肥市,就能找出所以合肥市的医院。
之前我是这样做的:
CREATE PROCEDURE 安徽合肥市医院 AS
select * from 安徽省医院 where 所在城市='合肥市'不过要是每个市都要这样做,不是要建好多存储过程。请大家帮忙写用一个存储过程就能实现的。
1 安徽省立医院 合肥市
74 蚌埠市第一人民医院 蚌埠市
75 蚌埠市第二人民医院 蚌埠市
76 蚌埠市第三人民医院 蚌埠市
37 合肥丽人女子医院 合肥市
38 合肥心血管病医院 合肥市
39 合肥东方医院 合肥市
40 合肥市中医医院 合肥市
我想写一个存储过程,当用户在页面上输入所要找的城市比如合肥市,就能找出所以合肥市的医院。
之前我是这样做的:
CREATE PROCEDURE 安徽合肥市医院 AS
select * from 安徽省医院 where 所在城市='合肥市'不过要是每个市都要这样做,不是要建好多存储过程。请大家帮忙写用一个存储过程就能实现的。
你把你的过程做一个入参啊 不就搞定啦
declare
v_sql varchar2(500);
v_sql := 'select * from '||tablenm||' where city='||v_city;
execute immediate v_sql;
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;
declare
cursor 游标名(城市名变量 varchar2) is select 序号,医院,城市名 from 表 where 城市名字段 = 城市名变量;
begin
for var_exp in 游标名(要传入的城市名) loop
dbms_output.put_line(游标名.序号||':'||游标名.医院名);
end loop;
end;