2010-02-22 9 views
0

Je voudrais écrire une procédure avec curseur, qui va tourmenter le patient au premier médecin libre (qui n'a pas de visite en ce moment, mais je ne sais pas ce qui serait plus facileCurseur SQL dans la procédure

  • à déclarer heure comme « IN » dans la procédure, puis trouver un médecin gratuitement à ce moment
  • ou trouver un médecin sans cette fois-ci à la fin du centre médical sachant que l'on visite des 15 dernières minutes).

Avez-vous trouvé des astuces?

Voici ma structure de table. Et si vous pensez que mon exemple n'est pas bon pour la procédure avec la fonction, vous pouvez me donner un exemple de différent (parce qu'il doit par n'importe quelle procédure avec la fonction liée à mon centre médical).

J'ai quatre tables

  • (adresse int Id_patient, char (11) nom, char (20) nom, char (30)) des patients
  • Doctor (int Id_doctor, char (11) nom, char (20) nom de famille)
  • Visite (#Id_patient, #Id_doctor, Id_visit, char (20) la maladie, le temps time_of_visit)
  • Work_hour (#Id_doctor, int Id_Workhour, char (11) name_of_day, le temps from_hour , time to_hour)
+1

Quelle est la structure de votre table? –

+0

Astuce serait d'essayer de le faire sans un curseur d'abord, vous devrez fournir plus d'informations si. –

+0

Pourquoi est-il nécessaire d'utiliser un curseur? Accepteriez-vous des solutions qui n'utilisent pas de curseur? –

Répondre

0

Quelque chose comme ça?

create or replace procedure sho_doc(p_hour in varchar2) 
is 
    cursor get_free_time_cur 
    is 
    select doctor_name 
    from doctor_table 
    where status = 'FREE' 
    and slot = p_hour_in; 
begin 
    for idx in get_free_time_cur 
    loop 
     //Do some thing here 
    end loop 
end; 

Je suppose que vous utilisez Oracle. Je ne connais pas la structure de la table. Donc, juste en supposant des choses.