I would like to understand the behavior of VOLATILE and IMMUTABLE keywords while we use during Procedure creation
As per the documentation, I have understood the theory
But I am trying to understand how these two keywords are behaving practically.
I have tried following examples
Example - IMMUTABLE
CREATE or REPLACE PROCEDURE HELLO_WORLD()
RETURNS VARIANT
LANGUAGE JAVASCRIPT
IMMUTABLE
AS
$$
var sql_command =
"select id, name from emp";
try {
var stmt = snowflake.execute (
{sqlText: sql_command}
);
var a = []
while (stmt.next()){
a.push(stmt.getColumnValue(1))
}
return a;
}
catch (err) {
return "Failed: " + err;
}
$$;
CALL HELLO_WORLD();
Example - VOLATILE
CREATE or REPLACE PROCEDURE HELLO_WORLD()
RETURNS VARIANT
LANGUAGE JAVASCRIPT
VOLATILE
AS
$$
var sql_command =
"select id, name from emp";
try {
var stmt = snowflake.execute (
{sqlText: sql_command}
);
var a = []
while (stmt.next()){
a.push(stmt.getColumnValue(1))
}
return a;
}
catch (err) {
return "Failed: " + err;
}
$$;
CALL HELLO_WORLD();
Both returns same output
[ 3, 2, 1 ]
Can anyone explain with any different example please ?
