Збережена процедура в SAP HANA (підручник з SQL)
⚡ Розумний підсумок
SAP Збережена процедура HANA SQL — це багаторазовий іменований блок SQLScript, який виконує певну операцію з даними. Він приймає параметри IN, OUT та INOUT, може бути позначений як «лише для читання» за допомогою READS SQL DATA та створюється на рівні схеми або пакета за допомогою синтаксису CREATE PROCEDURE.

Що таке збережена процедура SQL?
A збережена процедура — це іменована, повторно використовувана одиниця коду, яка виконує певне завдання. Процедури можна об'єднувати в більші програми, що є основою Модульний дизайнОдна процедура може викликати іншу — той, хто викликає, називається виклик програми.
Процедури — це блоки обробки, які можна повторно використовувати, з визначеною послідовністю перетворень даних. Вони можуть приймати кілька вхідних і вихідних параметрів і можуть бути оголошені лише для читання або для читання та запису.
An SQL процедура в SAP ХАНА можна створити за адресою:
- Рівень схеми (Вузол каталогу) — керується через каталог і видимий для кожного споживача з відповідними привілеями.
- Рівень пакету (Вузол контенту) — керується як артефакт часу розробки всередині пакета програми.
SAP Синтаксис збережених процедур HANA
Загальний синтаксис для створення процедури в SAP HANA показано нижче.
CREATE PROCEDURE <proc_name> [(<parameter_clause>)] [LANGUAGE <lang>]
[SQL SECURITY <mode>] [DEFAULT SCHEMA <default_schema_name>]
[READS SQL DATA [WITH RESULT VIEW <view_name>]] AS
{ BEGIN [SEQUENTIAL EXECUTION]
<procedure_body>
END
| HEADER ONLY }
Команда CREATE PROCEDURE оператор створює процедуру, використовуючи мову програмування, визначену параметром <lang>Мова за замовчуванням — SQLScript.
Пояснення синтаксичних елементів
У таблиці нижче описано кожен пункт, що використовується в синтаксисі CREATE PROCEDURE.
| Елемент | Опис |
|---|---|
<proc_name> |
Назва процедури. |
<parameter_clause> |
Список параметрів, кожен з яких позначено як IN, OUT або INOUT: • IN — вхідні дані лише для читання, що передаються процедурі. • OUT — результат, повернутий процедурою. • ВХІД/ВИХІД — передає значення та повертає змінене значення. |
LANGUAGE <lang> |
Мова програмування, що використовується в процедурі. За замовчуванням: SQLSCRIPT. |
SQL SECURITY <mode> |
Режим безпеки (за замовчуванням: ВИЗНАЧАЛЬНИК): • ВИЗНАЧАЛЬНИК — виконується з привілеями автора процедури. • ВИКЛИКАЧ — виконується з привілеями викликаючої сторони. |
DEFAULT SCHEMA <default_schema_name> |
Схема, що використовується для розв'язання некваліфікованих об'єктів у тілі процедури. Якщо пропущено, використовується схема поточного сеансу. |
READS SQL DATA |
Позначає процедуру як процедуру лише для читання. Вона не може змінювати дані або схему, не містить DDL або DML і може викликати лише інші процедури лише для читання. |
WITH RESULT VIEW <view_name> |
Визначає результатний вигляд, який використовується як вивід процедури. Коли результатний вигляд присутній, процедура може бути запитувана іншим SQL оператор так, ніби це таблиця або представлення. |
SEQUENTIAL EXECUTION |
Примушує тіло процедури виконуватися послідовно без паралелізму. |
<procedure_body> |
Основна частина процедури, написана обраною мовою програмування. |
HEADER ONLY |
Створює лише властивості процедури з OID, без компіляції тіла. Корисно для прямих оголошень. |
Приклад: Створення простої збереженої процедури
У наведеному нижче прикладі створюється процедура лише для читання, яка повертає загальну суму продажів для заданого клієнта.
CREATE PROCEDURE GET_CUSTOMER_SALES (
IN iv_customer_id NVARCHAR(10),
OUT ev_total DECIMAL(15,2)
)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
READS SQL DATA AS
BEGIN
SELECT SUM(NET_VALUE) INTO ev_total
FROM "SALES"."ORDERS"
WHERE CUSTOMER_ID = :iv_customer_id;
END;
Викличте процедуру за допомогою:
CALL GET_CUSTOMER_SALES ('C0001', ?);
SAP HANA Studio (або будь-який клієнт JDBC/ODBC) повертає значення ev_total у вихідному параметрі.
Виклик збереженої процедури
Після створення збережена процедура викликається через CALL оператор, необов'язково всередині іншої процедури, функції SQLScript або зовнішнього клієнта. Чотири найпоширеніші шаблони виклику:
- З SQL:
CALL my_proc(p1, p2, ?);— заповнювачі повертають значення OUT. - З іншої процедури:
CALL another_proc(:in1, :out1); - З програми: прив’язувати вхідні параметри та зчитувати вивід через JDBC, ODBC або Cloud SDK.
- Як віртуальний стіл: Коли оголошується результатний вигляд, запитуйте процедуру за допомогою SELECT щодо імені вигляду.
Найкращі практики для збережених процедур HANA
Наведені нижче звички забезпечують зрозумілість, ефективність та легкість обслуговування процедур HANA:
- Назвіть параметри з префіксами:
iv_для введення,ev_на експорт, таiov_для вводу/виводу. - Позначте намір за допомогою READS SQL DATA скрізь, де процедура дійсно доступна лише для читання.
- Використання SQL SECURITY INVOKER для спільних процедур, які повинні поважати привілеї абонента.
- Оберніть кожен блок у BEGIN/END і зробіть тіло коротким — розділіть важку логіку на допоміжні процедури.
- Обробка винятків: використання
DECLARE EXIT HANDLERдля коректного повідомлення про помилки. - Уникайте SELECT * всередині процедур — назвіть стовпці, які вам насправді потрібні, щоб плани залишалися стабільними.
