Ошибка в строке 5: PL / SQL: игнорируется оператор SQL

#oracle #stored-procedures #plsql

#Oracle #хранимые процедуры #plsql

Вопрос:

 create or replace procedure NrCopii2 (NrNume varchar2)
as
  NrNume COPIL.nume%type;
begin
  select count(nume) from Copil
  dbms_output.put_line(NrNume);
end;
/
 

Ответ №1:

Необходимо исправить некоторые опечатки :

  • добавьте into NrNume (непосредственно перед from ) и добавьте ; в конец этого оператора, предполагая, что тип данных nume столбца является простым number или integer , в противном случае вы можете заменить copil.nume%type на int слишком
  • либо удалите NrNume параметр процедуры, либо локальную переменную NrNume при замене NrCopii2 (NrNume varchar2) на NrCopii2 (NrNume out varchar2) , у них одинаковые имена, и предпочтительнее использовать одно из них

PS. не забывайте выдавать set serveroutput on при каждом вызове процедуры, чтобы отобразить значение, возвращаемое для NrNume

В результате может использоваться следующий блок кода

 SQL> SET SERVEROUTPUT ON
SQL> CREATE OR REPLACE PROCEDURE NrCopii2 AS
  NrNume INT;
BEGIN
  SELECT COUNT(nume) INTO NrNume FROM Copil;
  DBMS_OUTPUT.PUT_LINE(NrNume);
END;
/
 

Комментарии:

1. вы можете, пожалуйста, показать, как должен выглядеть код, потому что я довольно плох, и я не могу понять второй пункт, пожалуйста, если нужно, я могу показать базу данных

Ответ №2:

Вы также можете создать анонимную процедуру.

 DECLARE
  NrNume COPIL.nume%type;
BEGIN
  
  SELECT count(nume) INTO NrNume
  FROM Copil;
  
  dbms_output.put_line(NrNume);
END;
/
 

Комментарии:

1. Можете ли вы сделать это в процедуре pls?