Création et appel de procédures stockées¶
Vous pouvez utiliser l’API SQL pour créer et appeler des procédures stockées. Voici un exemple du corps d’une requête POST qui crée une nouvelle procédure stockée transmettant le nom d’une table et renvoyant le nombre de lignes dans cette table :
{
"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"
}
Voici un exemple du corps de la réponse pour cette requête :
{
"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
}
Voici un exemple du corps d’une requête POST qui appelle la procédure stockée, en transmettant le nom de la table « prices »:
{
"statement": "call sql_api_stored_proc('prices');",
"role": "MY_ROLE",
"warehouse": "MY_WAREHOUSE",
"database": "MY_DB",
"schema": "MY_SCHEMA"
}
Voici un exemple du corps de la réponse pour cette requête :
{
"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
}