【发布时间】:2022-08-17 18:54:14
【问题描述】:
我正在尝试开发一个存储过程,用户可以运行该存储过程来更改他们的默认仓库,它只有一个输入变量:用户也想要更改默认仓库的仓库。我想在检查用户输入的仓库变量是否存在的地方添加验证。
所以我希望能够在存储过程中运行“SHOW WAREHOUSES LIKE :warehouse”查询,并在此执行 SELECT COUNT (*) 以计算有多少仓库,如输入变量 :warehouse 这样我就可以验证它是否存在。我不知道如何做到这一点,所以有谁知道我可以做到这一点的方法,有一个代码示例,所以我可以看到语法?
在步骤中,我想要做的是: (1) 运行 SHOW WAREHOUSES LIKE 查询, (2) 像输入变量 :warehouse 一样,统计有多少个仓库, (3) 然后执行一个 IF 语句,如 \"IF warehouse_check =0 THEN RETURN \'warehouse doesn\'texist\'\"。
到目前为止我尝试过的(无论如何都不是 SQL 专家,还在学习所以语法可能非常糟糕)
sql_command := \'SHOW WAREHOUSES LIKE \'||:warehouse||\';\';
EXECUTE IMMEDIATE :sql_command;
warehouse_check := \'SELECT COUNT (*) FROM (RESULT_SCAN ( { LAST_QUERY_ID() } ))\';
EXECUTE IMMEDIATE :warehouse_check;
IF (warehouse_check =0) THEN
RETURN \'No warehouse with that name\';
END IF;
并且
usage_check := \'SELECT (SHOW WAREHOUSES LIKE \'||:warehouse||\');\';
warehouse_check := (select count(*) from table(result_scan(last_query_id(-1))) where \"name\" = :warehouse);
IF (warehouse_check = 0) THEN
RETURN \'No warehouse with that name\';
END IF;
如果有人有任何想法,将不胜感激!
标签: sql snowflake-cloud-data-platform