Skip to content
Advertisement

Call stored procedure in Snowflake query

I have a stored procedure, called SP_CALC_BUCKET, defined. I can call it like so:

CALL SP_CALC_BUCKET('1972-10-01', 2, 6)

and this works, and returns the result I expect. However, if I try to call this stored procedure for each row returned from a SELECT statement:

SELECT SP_CALC_BUCKET($1, $2, $3) 
FROM (VALUES ('2022-01-01', 5, 4), ('1972-10-01', 1, 6), ('2008-08-08', 1, 7), 
    ('1999-12-31', 2, 8), ('2000-01-01', 0, 10))

I get the following error:

Unknown user-defined function SP_CALC_BUCKET

Clearly, the Syntax is informing Snowflake that it should look for a UDF called SP_CALC_BUCKET. So, then, how do I modify this query so that it works?

Advertisement

Answer

You cannot use a stored proc in SQL. You should register a function and use it.

Please refer the following from doc:

Stored Procedures Are Called as Independent Statements A function evaluates to a value, and can be used in contexts in which a general expression can be used (e.g. SELECT my_function() …).

A stored procedure does not evaluate to a value, and cannot be used in all contexts in which a general expression can be used. For example, you cannot execute SELECT my_stored_procedure()….

A stored procedure is called as an independent statement. The code below illustrates the difference between calling a stored procedure and calling a function:

CALL MyStoredProcedure_1(argument_1);

SELECT MyFunction_1(column_1) FROM table1;

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement