Procedury SQL

O1
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam. Chcę napisać procedurę, która doda do bazy nowego klienta, jednak mam z tym problem. Oto tabela klienci:

Kopiuj
CREATE TABLE Klienci (
Id_klienta NUMBER CONSTRAINT klient_pk PRIMARY KEY,
Id_osoby NUMBER NOT NULL CONSTRAINT kl_unique UNIQUE,
Znizka NUMBER,
CONSTRAINT kl_os_fk FOREIGN KEY (Id_osoby) REFERENCES Osoby(Id_osoby)
);

Napisałem taką procedurę:

Kopiuj
create or replace procedure dodajklienta
@id_osoby int
@id_klienta int
@znizka int
as 
insert klienci
values(@id_osoby, @id_klienta, @znizka)

execute klienci 15, 13, 0
select *from klienci;

Jednak nie działa tak jak powinno. Wzorowałem się na przykładzie z tej strony: http://main3.amu.edu.pl/~przemeks/files/programowanie_sql_cd.pdf
Wywala mi błąd podczas kompilacji procedury:
PROCEDURE dodajklienta compiled
Warning: wykonywanie ukończono z ostrzeżeniem

A gdy chcę dodać klienta za pomocą execute klienci 15, 13, 0 nic się nie dzieje i wywala błędy.

  • Rejestracja: dni
  • Ostatnio: dni
0

Może bardziej coś w tym stylu:

Kopiuj
CREATE OR REPLACE PROCEDURE dodajklienta
@id_osoby INT
@id_klienta INT
@znizka INT
AS 
BEGIN
INSERT klienci(id_osoby, id_klienta, znizka) VALUES(@id_osoby, @id_klienta, @znizka)
END
 
EXECUTE klienci 15, 13, 0
SELECT *FROM klienci;
  • Rejestracja: dni
  • Ostatnio: dni
0

Może bardziej coś w tym stylu:

Kopiuj
CREATE OR REPLACE PROCEDURE dodajklienta
@id_osoby INT,
@id_klienta INT,
@znizka INT
AS 
BEGIN
INSERT klienci(id_osoby, id_klienta, znizka) VALUES(@id_osoby, @id_klienta, @znizka)
END
 
EXECUTE klienci 15, 13, 0
SELECT *FROM klienci;
  • Rejestracja: dni
  • Ostatnio: dni
0

CREATE OR REPLACE PROCEDURE dodajklienta
EXECUTE **klienci **15, 13, 0

INSERT INTO klienci

O1
  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki za próbę pomocy, ale udało mi się wreszcie samemu rozwiązać problem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.