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