Перейти к содержанию

CREATE PROCEDURE

DDL-команда CREATE PROCEDURE используется для создания новой процедуры.

Примечание

Пользователь может создавать и затем управлять своими процедурами при наличии соответствующей привилегии.

Созданная процедура хранится в системной таблице _pico_routine.

Синтаксис

CREATE PROCEDURE IF NOT EXISTS procedure ( type , ) LANGUAGE SQL AS \(\(</text> <a xlink:href="../insert" xlink:title="insert" id="a31"> <rect x="288" y="243" width="56" height="32" id="rect30"/> <rect x="286" y="241" width="56" height="32" class="nonterminal" id="rect31"/> <text class="nonterminal" x="314.0" y="257.0" id="text31">insert</text> </a> <a xlink:href="../update" xlink:title="update" id="a33"> <rect x="288" y="287" width="64" height="32" id="rect32"/> <rect x="286" y="285" width="64" height="32" class="nonterminal" id="rect33"/> <text class="nonterminal" x="318.0" y="301.0" id="text33">update</text> </a> <a xlink:href="../delete" xlink:title="delete" id="a35"> <rect x="288" y="331" width="60" height="32" id="rect34"/> <rect x="286" y="329" width="60" height="32" class="nonterminal" id="rect35"/> <text class="nonterminal" x="316.0" y="345.0" id="text35">delete</text> </a> <rect x="392" y="243" width="38" height="32" rx="10" id="rect36"/> <rect x="390" y="241" width="38" height="32" class="terminal" rx="10" id="rect37"/> <text class="terminal" x="409.0" y="257.0" id="text37">\)\) BEGIN ATOMIC insert update delete END WAIT APPLIED GLOBALLY LOCALLY OPTION ( TIMEOUT = double )

Тип

Диаграмма

Параметры

  • PROCEDURE — имя процедуры. Соответствует правилам имен для всех объектов в кластере
  • IF NOT EXISTS — позволяет избежать ошибки в случае, если такая процедура в кластере уже есть
  • WAIT APPLIED — при использовании этого параметра контроль пользователю будет возвращен только после того как данная операция будет применена либо во всем кластере (GLOBALLY), либо в рамках текущего инстанса (LOCALLY)

Ограничения

На текущий момент тело процедуры может содержать единственную DML-команду.

Примеры

Тестовые таблицы

Примеры использования команд включают в себя запросы к тестовым таблицам.

Процедура для добавления новых строк в таблицу warehouse:

CREATE PROCEDURE proc (int, text, text)
AS $$INSERT INTO warehouse VALUES($1, $2, $3)$$
OPTION (TIMEOUT = 5.0);

где:

  • proc — название процедуры
  • int, text, text — типы аргументов процедуры
  • $1, $2, $3 — позиции значений из аргументов процедуры