I have to create a procedure that inserts a person to table:
x
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