sql >> Databáze >  >> RDS >> Oracle

Pokus o vytvoření balíčku – chyba PLS-00330

Chyba je hlášena na řádku 11 těla balíčku, což je

    RETURN NUMBER;

Číslo je datový typ, nikoli název proměnné. Není jasné, co se sem vlastně chcete vrátit; jak se dotazujete a zachycujete, možná LOCATION; ale protože se jedná o řetězec, návratový typ funkce by také musel být řetězec (tj. VARCHAR2 místo NUMBER ). Možná:

create or replace PACKAGE BODY e_con_pack
    AS
    FUNCTION 
    GET_LOCATION_namel (p_con_id in NUMBER, p_con_name out VARCHAR2)
    RETURN VARCHAR2 IS  
     LOCATION VARCHAR2(30);
    BEGIN
      SELECT LOCATION INTO LOCATION FROM LDS_CONSULTANT WHERE CONSULTANT_ID = p_con_id;    
      SELECT CST_NAME INTO p_con_name FROM LDS_CONSULTANT WHERE CONSULTANT_ID = p_con_id;

    RETURN LOCATION;
    END GET_LOCATION_namel;

Nebo ještě lépe použijte datový typ sloupce, jak jste již jinde:

create or replace PACKAGE BODY e_con_pack
    AS
    FUNCTION 
    GET_LOCATION_namel (p_con_id in NUMBER, p_con_name out VARCHAR2)
    RETURN LDS_CONSULTANT.LOCATION%type IS  
     LOCATION LDS_CONSULTANT.LOCATION%type;
    BEGIN
...

V každém případě budete muset změnit specifikaci balíčku tak, aby odpovídala, samozřejmě.




  1. odstranit sloupec neexistuje

  2. SQLzoo JOIN kurz #13

  3. Nelze vložit hodnotu tak, jak je - potřebujete odpověď pro jakoukoli DB - Oracle, SQL Server, MySql atd

  4. Uživatelská oprávnění MySQL na sdílených serverech