DECLARE (Snowflakeスクリプト)

1つ以上のSnowflakeスクリプト変数、カーソル、 RESULTSETs、または例外を宣言します。

変数、カーソル、 RESULTSETs、および例外の詳細については、以下をご参照ください。

こちらもご参照ください:

LET

構文

DECLARE
  { <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> };
  [{ <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> }; ... ]
Copy

各タイプの宣言の構文については、以下で詳しく説明します。

変数宣言構文

次の構文を使用して、 変数を宣言 します。

<variable_declaration> ::=
  <variable_name> [<type>] [ { DEFAULT | := } <expression>]
Copy

条件:

variable_name

変数の名前。名前は、 オブジェクト識別子 の名前付け規則に従う必要があります。

type

SQL データ型

DEFAULT expression または . := expression

expression の値を変数に割り当てます。 typeexpression の両方が指定されている場合、式は一致するデータ型に評価される必要があります。または、式を指定した type に暗黙的に キャスト することができます。

例:

profit NUMBER(38, 2) := 0;
Copy

包括的な例については、 をご参照ください。

変数の詳細については、 変数の操作 をご参照ください。

カーソル宣言構文

次の構文を使用して、 カーソルを宣言 します。

<cursor_declaration> ::=
  <cursor_name> CURSOR FOR <query>
Copy

条件:

cursor_name

カーソルに付ける名前。これは、このブロックでまだ使用されていない有効なSnowflake 識別子 であればどれでもかまいません。識別子は、 FETCH などの他のカーソル関連コマンドで使用されます。

query

カーソルが反復する、結果セットを定義するクエリ。

これは、有効な SELECT ステートメントの大半に当てはまります。

例:

c1 CURSOR FOR SELECT id, price FROM invoices;
Copy

カーソル(包括的な例を含む)の詳細については、 カーソルの操作 をご参照ください。

RESULTSET 宣言構文

次の構文を使用して、 RESULTSET を宣言します。

<resultset_name> RESULTSET [ { DEFAULT | := } ( <query> ) ] ;
Copy

条件:

resultset_name

RESULTSET に付ける名前。

名前は、現在のスコープ内で一意である必要があります。

名前は、 オブジェクト識別子 の名前付け規則に従う必要があります。

DEFAULT query または . := query

query の値を RESULTSET に割り当てます。

RESULTSETs (包括的な例を含む)の詳細については、 RESULTSETs の操作 をご参照ください。

例外宣言構文

次の構文を使用して、 例外を宣言 します。

<exception_name> EXCEPTION [ ( <exception_number> , '<exception_message>' ) ] ;
Copy

条件:

exception_name

例外に付ける名前。

exception_number

例外を一意に識別するための番号。数値は-20000と-20999の間の整数でなければなりません。この番号は、同時に存在する他の例外には使用しないでください。

デフォルト: -20000

exception_message

例外を説明するメッセージ。メッセージには二重引用符を含めることはできません。

デフォルト: 空の文字列。

例:

exception_could_not_create_table EXCEPTION (-20003, 'ERROR: Could not create table.');
Copy

例外(包括的な例を含む)の詳細については、 処理の例外 をご参照ください。

DECLARE
  profit number(38, 2) DEFAULT 0.0;
BEGIN
  LET cost number(38, 2) := 100.0;
  LET revenue number(38, 2) DEFAULT 110.0;

  profit := revenue - cost;
  RETURN profit;
END;
Copy

注: SnowSQL または Classic Console を使用している場合は、代わりに次の例を使用します(SnowSQL および Classic Console でのSnowflakeスクリプトの使用 を参照)。

EXECUTE IMMEDIATE $$
    DECLARE
        profit number(38, 2) DEFAULT 0.0;
    BEGIN
        LET cost number(38, 2) := 100.0;
        LET revenue number(38, 2) DEFAULT 110.0;

        profit := revenue - cost;
        RETURN profit;
    END;
$$
;
Copy