sql - 存储过程 ora-06550 和 ora-00905
问题描述
我创建了这个存储过程来显示一个省的平均案例。当它获得一个有效的省份(与 PROVINCE 表比较)作为参数时,将引发 cont 变量。如果未引发 cont=0 则 -> 异常。如果它被提出然后 -> 继续执行 te 程序,它应该输出我用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;
解决方案
无效的语法,这里:
select count(*| INT) Cont
应该
select count(*) into Cont
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 (*)
INTO 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;
推荐阅读
- jython - SikuliX 无法调用 makeOpts()
- ckeditor - CKEditor:粘贴后如何保持样式/格式
- python - 遍历数据框中的每一行和每一列并对列值执行操作
- mysql - 根据匹配选择不同的记录并忽略重复的 id
- laravel - Docker Sail 一次又一次地重建
- azure - 如何在 Azure 中创建具有 500 个辐条的集线器和辐条
- reason - 为什么我不能为这个字段分配一个 64 位整数?
- r - 在数据框中将列转换为行并将行转换为列
- r - 使用 ggarrange 和 do.call 时,R 中 pdf() 中的 pdf 文件损坏
- excel - 将邮件标题字段导出到 Excel