procedures
This commit is contained in:
90
banque.procedures.md
Normal file
90
banque.procedures.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# Les procédures
|
||||
|
||||
Les procédures permettent d'exécuter plusieurs opérations en un seul appel dans un bloc de code
|
||||
|
||||
Si une erreur survient **rien** n'est enregistré
|
||||
|
||||
## Banque
|
||||
|
||||
```sql
|
||||
create or replace procedure add_bank (
|
||||
name text
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
declare
|
||||
v_holder_id bigint;
|
||||
begin
|
||||
|
||||
insert into holder(type) values ('BANK')
|
||||
returning id into v_holder_id;
|
||||
|
||||
insert into bank(id, name)
|
||||
values (v_holder_id, name);
|
||||
|
||||
raise notice 'Titulaire créé : % = %',
|
||||
v_holder_id, name;
|
||||
end;
|
||||
$$;
|
||||
```
|
||||
|
||||
## Individu
|
||||
|
||||
```sql
|
||||
create or replace procedure add_person (
|
||||
p_firstname text,
|
||||
p_lastname text,
|
||||
p_birthdate date
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
declare
|
||||
v_holder_id bigint;
|
||||
begin
|
||||
|
||||
insert into holder(type) values ('PERSON')
|
||||
returning id into v_holder_id;
|
||||
|
||||
insert into person(id, firstname, lastname, birthdate)
|
||||
values (v_holder_id, p_firstname, p_lastname, p_birthdate);
|
||||
|
||||
raise notice 'Titulaire créé : % = % %',
|
||||
v_holder_id, p_firstname, p_lastname;
|
||||
end;
|
||||
$$;
|
||||
```
|
||||
|
||||
```sql
|
||||
call add_person('Françoise', 'Zanetti', '1995-04-12');
|
||||
call add_person('Justin', 'Hébrard', '1993-03-11');
|
||||
```
|
||||
|
||||
## Société
|
||||
|
||||
```sql
|
||||
create or replace procedure add_company (
|
||||
p_name text,
|
||||
p_registration_number text,
|
||||
p_created_at date
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
declare
|
||||
v_holder_id bigint;
|
||||
begin
|
||||
|
||||
insert into holder(type) values ('COMPANY')
|
||||
returning id into v_holder_id;
|
||||
|
||||
insert into company(id, name, registration_number, created_at)
|
||||
values (v_holder_id, p_name, p_registration_number, p_created_at);
|
||||
|
||||
raise notice 'Titulaire créé : % = % %',
|
||||
v_holder_id, p_name, p_registration_number;
|
||||
end;
|
||||
$$;
|
||||
```
|
||||
|
||||
```sql
|
||||
call add_company('Boulangerie de Valorgue', 'FR19803269968', '2014-08-19');
|
||||
```
|
||||
Reference in New Issue
Block a user