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