Oracle
 sql >> база данни >  >> RDS >> Oracle

Проблем със съхранената процедура на Oracle inout параметър – Разбрах решението – Печатна грешка

Някои проблеми:

  1. VARHAR2 ние сме правописна грешка и трябва да бъде VARCHAR2 .
    • Вместо това бихте могли да посочите типовете данни за препратка към съответните колони на таблицата, като използвате table_name.column_name%TYPE .
  2. Процедурата не извежда нищо - трябва да промените един от IN параметри към OUT (или IN OUT параметър).
  3. Вашата заявка не посочва име на таблица.
  4. Можете да използвате SELECT ... INTO ... вместо CURSOR .

Нещо подобно:

CREATE OR REPLACE PROCEDURE FIRSTPROC (
  ID1 IN  table_name.id1val%TYPE,
  ID2 OUT table_name.id2val%TYPE
)
AS
BEGIN
  DBMS_OUTPUT.PUT_LINE(ID1);
  SELECT id2val
  INTO   ID2
  FROM   table_name
  WHERE  id1val = ID1;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    ID2 := 0; -- Or you could use NULL
  WHEN TOO_MANY_ROWS THEN
    ID2 := 0; -- Or you could use NULL
END;
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблеми с TransactionScope и Oracle

  2. Добавете ден към Timestamp

  3. Oracle:Как да броим нулеви и ненулеви редове

  4. Налагане на уникален/първичен ключ - индекс за премахване

  5. Материализиран изглед - Oracle/данните не се актуализират