Procedures¶
Procedures are the fundamental building blocks of elastic-script.
Creating Procedures¶
Example¶
Parameters¶
Parameter Modes¶
| Mode | Description |
|---|---|
IN | Input only (default) |
OUT | Output only |
INOUT | Both input and output |
CREATE PROCEDURE calculate(IN x NUMBER, IN y NUMBER, OUT result NUMBER)
BEGIN
SET result = x + y;
END PROCEDURE;
Parameter Types¶
CREATE PROCEDURE example(
name STRING,
count NUMBER,
is_active BOOLEAN,
items ARRAY,
config DOCUMENT
)
BEGIN
-- Use parameters
END PROCEDURE;
Default Values¶
CREATE PROCEDURE greet(name STRING DEFAULT 'World')
BEGIN
RETURN 'Hello, ' || name || '!';
END PROCEDURE;
Calling Procedures¶
Examples¶
-- Simple call
CALL greet('Alice')
-- With multiple arguments
CALL calculate(10, 20)
-- With named arguments (future)
CALL send_email(to: 'user@example.com', subject: 'Hello')
Return Values¶
Single Value¶
Document (Object)¶
CREATE PROCEDURE get_stats()
BEGIN
RETURN {
"count": 42,
"average": 3.14,
"status": "ok"
};
END PROCEDURE;
Array¶
No Return¶
Procedures without RETURN return NULL:
CREATE PROCEDURE log_event(message STRING)
BEGIN
PRINT message;
INDEX_DOCUMENT('audit-log', {"message": message});
END PROCEDURE;
Deleting Procedures¶
Listing Procedures¶
-- Get all procedures
DECLARE procs ARRAY = ESCRIPT_PROCEDURES();
-- Get specific procedure
DECLARE proc DOCUMENT = ESCRIPT_PROCEDURE('greet');
Stored Procedures¶
Procedures are stored in .elastic_script_procedures:
{
"_id": "greet",
"_source": {
"id": "greet",
"body": "CREATE PROCEDURE greet(name STRING) BEGIN RETURN 'Hello, ' || name || '!'; END PROCEDURE;",
"created_at": "2026-01-09T10:00:00Z"
}
}
Calling Other Procedures¶
Procedures can call other procedures:
CREATE PROCEDURE helper()
BEGIN
RETURN 'I helped!';
END PROCEDURE;
CREATE PROCEDURE main()
BEGIN
DECLARE result STRING = CALL helper();
PRINT 'Helper said: ' || result;
RETURN result;
END PROCEDURE;
Best Practices¶
Single Responsibility
Each procedure should do one thing well.
Meaningful Names
Use descriptive names: calculate_order_total not proc1.
Document Parameters
Use comments to explain what each parameter does.