表部分内容如下:
医院名称 儿科 妇科 男科 眼科  
安徽第一医院 NULL NULL NULL √ 
安徽第二医院 NULL NULL √ NULL 
安徽第三医院 √ √ NULL NULL
安徽第四医院 NULL NULL NULL √ 
安徽第五医院 NULL √ √ √ 现在我想写一个存储过程实现查询拥有某个科的医院,就是值打勾的的科室。
比如在页面上输入:妇科,然后就把安徽第三医院 和安徽第五医院查询出来。注意要是存储过程噢!!!还有4个科室:儿科 妇科 男科 眼科 是分别为1列的,不同的属性噢!!!

解决方案 »

  1.   

    这么复杂的逻辑用存储过程比较难耶!
    columnName : Varchar2(10);
    columnName := '妇科';
    sql = 'select "医院名称" from 表 where ' || columnName  || ' is not null';
      

  2.   

     succ Integer := 1;
         falg Integer := 0;     -- Function and procedure implementations
         Function GetSections(Sections In Varchar2, --传入子段名称(Pediatrics,Gynecology,Male,Ophthalmology)
                              Hospita  Out Varchar2) Return Integer Is
         
              v_sql Varchar2(1000) := '';
              v_hs  hospitasections%Rowtype;
              Type cur Is Ref Cursor;
              cu cur;
         Begin
              v_sql := 'select * from hospitasections t where t.' || Sections ||
                       '=''√''';
              Open cu For v_sql;
              Loop
                   Fetch cu
                        Into v_hs;
                   Exit When cu%Notfound;
                   Hospita := Hospita || v_hs.hospitalname || '|~~|';
              End Loop;
              Return succ;
         Exception
              When Others Then
                   Return falg;
         End GetSections;
      

  3.   

    --传入子段名称(Pediatrics(儿科),Gynecology(妇科),Male(男科),Ophthalmology(眼科)
      

  4.   

    就是一个拼接sql语句的问题,解决起来并不难,把页面的输入内容转换成字段,然后品接到sql中即可。
    不得不说,你这个数据库设计非常失败