Erstellen und Aufrufen von gespeicherten Prozeduren¶
Sie können die SQL-API verwenden, um gespeicherte Prozeduren zu erstellen und aufzurufen. Das folgende Beispiel zeigt den Text einer POST-Anforderung, der eine neue gespeicherte Prozedur erstellt, die den Namen einer Tabelle übergibt und die Anzahl der Zeilen in dieser Tabelle zurückgibt:
{ "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" }
Das folgende Beispiel zeigt den Text zur Antwort dieser Anforderung:
{ "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 }
Es folgt ein Beispiel für den Text einer POST-Anforderung, der die gespeicherte Prozedur aufruft und den Tabellennamen „prices“ übergibt:
{ "statement": "call sql_api_stored_proc('prices');", "role": "MY_ROLE", "warehouse": "MY_WAREHOUSE", "database": "MY_DB", "schema": "MY_SCHEMA" }
Das folgende Beispiel zeigt den Text zur Antwort dieser Anforderung:
{ "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 }