# ARGUMENTS MODE

{% hint style="info" %}
**Important Notice: Migration of Documentation Website**

Please be advised that our documentation website is currently undergoing a migration to a new platform. To ensure you have access to the most up-to-date information, we kindly request that you visit our new documentation website located at:

[Official Snowflake Snowconvert Documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/translation-references/redshift/README)

For any immediate assistance or if you encounter any issues, please contact our support team at [snowconvert-support@snowflake.com](mailto:snowconvert-support@snowflake.com).

Thank you for your understanding.
{% endhint %}

## Description

Amazon Redshift stored procedures support parameters that can be passed during procedure invocation. These parameters allow you to provide input values, retrieve output values, or use them for input and output operations. Below is a detailed explanation of the types of parameters, their modes, and examples of their usage. Snowflake only supports input values.

#### IN (Input Parameters)

Purpose: Used to pass values into the procedure.

Default Mode: If no mode is specified, parameters are considered IN.

Behavior: Values passed to the procedure cannot be modified inside the procedure.

#### OUT (Output Parameters)

Purpose: Used to return values from the procedure.

Behavior: Parameters can be modified inside the procedure and are returned to the caller. You cannot send an initial value.

#### INOUT (Input/Output Parameters)

Purpose: Used to pass values into the procedure and modify them to return updated values.

Behavior: Combines the behavior of IN and OUT. You must send an initial value regardless of the output.

## Grammar Syntax

```sql
[ argname ] [ argmode ] argtype
```

## Sample Source Patterns

#### Input Code:

{% tabs %}
{% tab title="Redshift" %}
<pre class="language-sql" data-title="IN -> Redshift_01.sql"><code class="lang-sql"><strong>CREATE OR REPLACE PROCEDURE SP_PARAMS(
</strong>IN PARAM1 INTEGER,
OUT PARAM2 INTEGER,
INOUT PARAM3 INTEGER)
AS 
$$
    BEGIN
        NULL;
    END;
$$ 
LANGUAGE plpgsql;
</code></pre>
{% endtab %}
{% endtabs %}

#### Output Code:

{% tabs %}
{% tab title="Snowconvert Output" %}
{% code title="OUT -> Redshift_01.sql" overflow="wrap" %}
```sql
CREATE OR REPLACE PROCEDURE SP_PARAMS (PARAM1 INTEGER, PARAM2 OUT INTEGER, PARAM3 OUT INTEGER)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "redshift",  "convertedOn": "07/10/2025",  "domain": "no-domain-provided" }}'
AS
$$
    BEGIN
        NULL;
    END;
$$;
```
{% endcode %}
{% endtab %}
{% endtabs %}

## Known Issues

There are no known issues.

## Related EWIs

1. [SCC-EWI-0028](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/general/ssc-ewi-0028) : Type not supported by Snowflake.
2. [SSC-EWI-RS0010](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/redshift/ssc-ewi-rs0009-1): Top-level procedure call with out parameters is not supported.
