Files
sql/banque.procedures.md
2025-11-15 21:51:30 +01:00

91 lines
1.7 KiB
Markdown

# 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');
```