Snowflake有没有附带的存储过程?
SHOW PROCEDURES IN ACCOUNT;
SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE "is_builtin" != 'N';
-- 0 rows
SHOW FUNCTIONS IN ACCOUNT;
SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE "is_builtin" != 'N';
-- 571我们有相当多的函数列表,但我找不到一个存储过程。
一些函数(例如SYSTEM$CANCEL_ALL_QUERIES)包含副作用,这意味着它们可以是存储过程(它们甚至支持通过CALL执行):
SELECT SYSTEM$CANCEL_ALL_QUERIES(CURRENT_SESSION()::INT);
CALL SYSTEM$CANCEL_ALL_QUERIES(CURRENT_SESSION()::INT);这种方法背后有什么理由吗?
发布于 2021-05-08 06:50:50
Snowflake在过去的6年里一直是一个不断发展的产品。当它第一次发布时,不支持动态SQL aka过程,对数据库自检的支持也很少,就像您在PostgreSQL的系统表中所做的那样。
许多"do X“或"tell me about Y”都是通过相当丑陋的函数调用来完成的,它们清楚地显示了你在哪里逃离了沙坑(与PostgreSQL相比,数据库的健康/状态也是“表”)。我记得我们的团队编写了支持从SHOW命令读取结果的代码,因为RESULT_SCAN还不存在。
因此平台发生了很大的变化,现在使用“函数”的心理模型只读,“过程”改变心态,似乎事情符合模型。
https://stackoverflow.com/questions/67441640
复制相似问题