【发布时间】:2020-07-08 11:24:59
【问题描述】:
我创建了这个存储过程来显示一个省的平均病例。 当它获得一个有效的省份(与 PROVINCE 表比较)作为参数时,将引发 cont 变量。 如果未引发 cont=0 则 -> 异常。 如果它被提出然后 -> 继续执行程序,它应该输出我用 DBMS_OUTPUT.PUT_LINE 写的行,并且它必须显示省份名称和案件数量。 无论如何,它不起作用,我无法理解为什么。我得到了 ora-06550 和 ora-00905。
CREATE OR REPLACE PROCEDURE Media_Casi_totali(Provincia IN PROVINCE.denominazione_provincia%TYPE) AS BEGIN DECLARE Media_dei_casi_totali COVID_PROVINCE.Totale_Casi%TYPE; Cont INTEGER; Provincia_Errata EXCEPTION; BEGIN select count(*| INT) Cont from PROVINCE P INNER JOIN COVID_PROVINCE CP ON P.CODICE_PROVINCIA = CP.CODICE_PROVINCIA where p.denominazione_provincia=Provincia; IF (cont=0) then Raise Provincia_Errata; ELSE select ROUND(AVG(CP.TOTALE_CASI),3) INTO Media_dei_casi_totali FROM PROVINCE P INNER JOIN COVID_PROVINCE CP ON P.CODICE_PROVINCIA=CP.CODICE_PROVINCIA WHERE P.DENOMINAZIONE_PROVINCIA=Provincia; DBMS_OUTPUT.PUT_LINE('Media dei casi totali' || 'relativi alla provincia di' || Provincia || ':' || Media_dei_casi_totali); END IF; EXCEPTION WHEN Provincia_Errata THEN DBMS_OUTPUT.PUT_LINE('La Provincia selezionata non esiste'); END; END Media_Casi_totali;
【问题讨论】:
-
您在
begin上方声明变量。如果你真的想用declare开始另一个块,你需要结束它以及过程。
标签: sql oracle stored-procedures datagrip