# PL/pgSQL procedures

Заполняется доменом. Каждая процедура регистрируется в `core.saved` с правильным `opertype`:
- `0` — reader (SELECT), идёт через reader pool
- `1` — delete, через writer pool
- `2` — update, через writer pool
- `3` — insert, через writer pool

Шаблон процедуры:
```sql
CREATE OR REPLACE PROCEDURE app.example_proc(p_in JSONB, INOUT p_out JSONB DEFAULT NULL)
LANGUAGE plpgsql AS $$
BEGIN
  -- читать параметры: p_in->>'foo'
  -- результат: p_out := jsonb_build_object('rows', …);
END$$;
```

Регистрация:
```sql
INSERT INTO core.saved (name, schema_name, proc_name, opertype, trackedtable)
VALUES ('example', 'app', 'example_proc', 0, '["app.example_table"]'::jsonb);
```
