我目前正在學習SQL,並且遇到了我的程序問題。該過程應計算名爲「INDICE_METABO_PAT」的列的平均值。我需要的信息是3-4個不同的表格。然後,當我確實計算了平均值時,我更新了一個表格以將此平均值設置爲相應的條目。這是程序。需要注意的是一切在我的.sql文件的工作原理:插入,更新,選擇,視圖等SQL Oracle - 程序語法(學校作業)
create or replace Procedure SP_UPDATE_INDICE_METABO_DV (P_NO_ETUDE in number)
is
V_SOMME number := 0;
V_NBPATIENT number := 0;
V_NO_ETUDE number := P_NO_ETUDE;
cursor curseur is
select PATIENT.INDICE_EFFICACITE_METABO_PAT
from ETUDE, DROGUE_VARIANT, ETUDE_PATIENT, PATIENT
where ETUDE.NO_DROGUE = DROGUE_VARIANT.NO_DROGUE
and ETUDE.NO_VAR_GEN = DROGUE_VARIANT.NO_VAR_GEN
and V_NO_ETUDE = ETUDE_PATIENT.NO_ETUDE
and ETUDE_PATIENT.NO_PATIENT = PATIENT.NO_PATIENT;
begin
open curseur;
fetch curseur into V_SOMME;
V_NBPATIENT := V_NBPATIENT + 1;
exit when curseur%NOTFOUND;
update DROGUE_VARIANT
set INDICE_EFFICACITE_METABO_DV = V_SOMME/V_NBPATIENT
where exists(select * from ETUDE, DROGUE_VARIANT, ETUDE_PATIENT, PATIENT
where ETUDE.NO_DROGUE = DROGUE_VARIANT.NO_DROGUE
and ETUDE.NO_VAR_GEN = DROGUE_VARIANT.NO_VAR_GEN
and V_NO_ETUDE = ETUDE_PATIENT.NO_ETUDE
and ETUDE_PATIENT.NO_PATIENT = PATIENT.NO_PATIENT);
end SP_UPDATE_INDICE_METABO_DV;
/
我得到一個錯誤:編譯程序,錯誤檢查編譯日誌。
但我無法打開編譯器日誌,當我的朋友打開它時,它指向奇怪的地方,比如我的創建表等。
這是學校的事情,所以如果您能夠提供洞察力而不是直接的解決方案,那將會很好。非常感謝。
非常感謝您的善意幫助!
不應該有一個循環處理從遊標中獲取的行嗎? –
你還沒有說過是什麼問題。你是否收到編譯錯誤,運行時錯誤,錯誤的結果?你爲什麼在程序中這樣做?爲什麼不直接在查詢中使用'avg()'聚合函數,或者直接在update語句中使用'avg()'聚合函數? –
告訴我們*不*工作會有多大幫助。你得到一個編譯錯誤?不正確的結果? –