Skip to content
Advertisement

Oracle : Not a valid function or procedure name

I have to create a procedure that inserts a person to table:

CREATE OR REPLACE PROCEDURE wypisz
(ID1 NUMBER,
Imie1 VARCHAR2,
Nazwisko1 VARCHAR2,
Wiek1 NUMBER,
Stan_cywilny1 VARCHAR2,
Telefon1 VARCHAR2,
Pesel1 CHAR,
Id_adresu1 NUMBER)
IS
BEGIN
      insert INTO Osoby(Id_osoby,Imie,Nazwisko,Wiek,STAN_CYWILNY,TELEFON,PESEL,ID_ADRESU) 
      VALUES (||Id1,||Imie1,||Nazwisko1,||Wiek1,||STAN_CYWILNY1,||TELEFON1,||PESEL1,||ID_ADRESU)
END;

When I call the function:

CALL WYPISZ(:ID_OSOBY, :IMIE, :NAZWISKO, :WIEK, :STAN_CYWILNY, :TELEFON, :PESEL, :ID_ADRESU) 

I get the error:

SQL Error [6576] [65000]: ORA-06576: not a valid function or procedure name

Advertisement

Answer

You can use:

CREATE PROCEDURE wypisz(
  ID1           OSOBY.ID_OSOBY%TYPE,
  Imie1         OSOBY.IMIE%TYPE,
  Nazwisko1     OSOBY.NAZWISKO%TYPE,
  Wiek1         OSOBY.WIEK%TYPE,
  Stan_cywilny1 OSOBY.STAN_CYWILNY%TYPE,
  Telefon1      OSOBY.TELEFON%TYPE,
  Pesel1        OSOBY.PESEL%TYPE,
  Id_adresu1    OSOBY.ID_ADRESU%TYPE
)
IS
BEGIN
  insert INTO Osoby(
    Id_osoby,Imie,Nazwisko,Wiek,STAN_CYWILNY,TELEFON,PESEL,ID_ADRESU
  ) VALUES (
    Id1,Imie1,Nazwisko1,Wiek1,STAN_CYWILNY1,TELEFON1,PESEL1,ID_ADRESU1
  );
END;
/

Which, if you have the table:

CREATE TABLE Osoby(
  Id_osoby     NUMBER(10,0) PRIMARY KEY,
  Imie         VARCHAR2(50),
  Nazwisko     VARCHAR2(50),
  Wiek         NUMBER,
  STAN_CYWILNY VARCHAR2(20),
  TELEFON      VARCHAR2(12),
  PESEL        CHAR(1),
  ID_ADRESU    NUMBER
);

Then you can do:

BEGIN
  wypisz( 1, 'ABC', 'DEF', 2, 'GHI', '123456789012', 'J', 3 );
END;
/

And the table contains:

SELECT * FROM Osoby;
ID_OSOBY | IMIE | NAZWISKO | WIEK | STAN_CYWILNY | TELEFON      | PESEL | ID_ADRESU
-------: | :--- | :------- | ---: | :----------- | :----------- | :---- | --------:
       1 | ABC  | DEF      |    2 | GHI          | 123456789012 | J     |         3

db<>fiddle here

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement