# Stored Procedure & Function

## Create Stored Procedure

```plsql
CREATE OR REPLACE PROCEDURE FINDMIN (
    V_NUM1 IN NUMBER,
    V_NUM2 IN NUMBER,
    V_RES  OUT NUMBER
) IS
BEGIN
    IF V_NUM1 > V_NUM2 THEN
        V_RES := V_NUM2;
    ELSE
        V_RES := V_NUM1;
    END IF;

    DBMS_OUTPUT.PUT_LINE('Min value is:' || V_RES);
END;
```

## Call Stored Procedure

```plsql
BEGIN
    FINDMIN(15, 55);
END;
```

## Create Function

```plsql
CREATE OR REPLACE FUNCTION CHECK_SAL (
    EMP_NO EMPLOYEES.EMPLOYEE_ID%TYPE
) RETURN BOOLEAN IS

    V_DEPT_ID EMPLOYEES.DEPARTMENT_ID%TYPE;
    V_SAL     EMPLOYEES.SALARY%TYPE;
    V_AVG_SAL EMPLOYEES.SALARY%TYPE;
BEGIN
    SELECT SALARY, DEPARTMENT_ID
    INTO V_SAL, V_DEPT_ID
    FROM EMPLOYEES
    WHERE EMPLOYEE_ID = EMP_NO;

    SELECT AVG(SALARY)
    INTO V_AVG_SAL
    FROM EMPLOYEES
    WHERE DEPARTMENT_ID = V_DEPT_ID;

    IF V_SAL > V_AVG_SAL THEN
        RETURN TRUE;
    ELSE
        RETURN FALSE;
    END IF;
    
EXCEPTION
    WHEN NO_DATA_FOUND THEN
        RETURN NULL;
END;
```

## Call Function

```plsql
DECLARE
    V_EMP_ID NUMBER := &EMP_ID;
BEGIN
    IF ( CHECK_SAL(V_EMP_ID) IS NULL ) THEN
        DBMS_OUTPUT.PUT_LINE('NULL');
    ELSIF ( CHECK_SAL(V_EMP_ID) ) THEN
        DBMS_OUTPUT.PUT_LINE('>');
    ELSE
        DBMS_OUTPUT.PUT_LINE('<');
    END IF;
END;
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.datahungry.dev/sql/stored-procedure-and-function.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
