ストアドプロシージャの作成と呼び出し

SQL API を使用して、ストアドプロシージャを作成し、呼び出すことができます。以下は、テーブルの名前を渡し、そのテーブルの行数を返す新しいストアドプロシージャを作成する POST リクエストの本文の例です。

{
  "statement": "create or replace procedure sql_api_stored_proc(table_name varchar) returns varchar language javascript as $$var sql_command = \"select count(*) from \" + TABLE_NAME; var rs = snowflake.execute({sqlText: sql_command}); rs.next(); var rowCount = rs.getColumnValue(1); return rowCount; $$;",
  "role": "MY_ROLE",
  "warehouse": "MY_WAREHOUSE",
  "database": "MY_DB",
  "schema": "MY_SCHEMA"
}
Copy

このリクエストに対する応答の本文の例を次に示します。

{
  "resultSetMetaData": {
    "numRows": 1,
    "format": "jsonv2",
    "rowType": [ {
      "name": "status",
      "database": "",
      "schema": "",
      "table": "",
      "type": "text",
      "byteLength": 16777216,
      "scale": null,
      "precision": null,
      "nullable": true,
      "collation": null,
      "length": 16777216
    } ]
  },
  "data": [ [ "Function SQL_API_STORED_PROC successfully created." ] ],
  "code": "090001",
  "statementStatusUrl": "/api/v2/statements/019c9f28-0502-f257-0000-438300e0a02a?requestId=...",
  "sqlState": "00000",
  "statementHandle": "019c9f28-0502-f257-0000-438300e0a02a",
  "message": "Statement executed successfully.",
  "createdOn": 1622494569592
}
Copy

以下は、ストアドプロシージャを呼び出し、テーブル名「prices」に渡す POST リクエストの本文の例です。

{
  "statement": "call sql_api_stored_proc('prices');",
  "role": "MY_ROLE",
  "warehouse": "MY_WAREHOUSE",
  "database": "MY_DB",
  "schema": "MY_SCHEMA"
}
Copy

このリクエストに対する応答の本文の例を次に示します。

{
  "resultSetMetaData": {
    "numRows": 1,
    "format": "jsonv2",
    "rowType": [ {
      "name": "SQL_API_STORED_PROC",
      "database": "",
      "schema": "",
      "table": "",
      "type": "text",
      "byteLength": 16777216,
      "length": 16777216,
      "scale": null,
      "precision": null,
      "nullable": true,
      "collation": null
    } ]
  },
  "data": [ [ "4" ] ],
  "code": "090001",
  "statementStatusUrl": "/api/v2/statements/019c9f2a-0502-f244-0000-438300e04496?requestId=...",
  "sqlState": "00000",
  "statementHandle": "019c9f2a-0502-f244-0000-438300e04496",
  "message": "Statement executed successfully.",
  "createdOn": 1622494718694
}
Copy