Snowflake SQL存储过程中的动态SQL

编程入门 行业动态 更新时间:2024-10-27 06:23:33
本文介绍了Snowflake SQL存储过程中的动态SQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我希望使用动态SQL在Snowflake SQL存储过程(而不是Java脚本)中运行SELECT查询。这可能吗?

我希望做的是将数据库名称作为参数传递。然后,我想为该数据库选择INFORMATION_SCHEMA.SCHEMATA中的所有架构名称。我想使用数据库名称的输入参数值来完全限定该表。例如,DBNAME.INFORMATION_SCHEMA.SCHEMATA其中DBNAME是我的输入参数的名称。

然后我要遍历结果,并为每个架构编写一些代码。

我找到了许多用于Java脚本的动态SQL示例,但我找不到一个用于SQL存储过程(语言SQL)的示例,因为它太新了。请让我知道这是否可能,如果可能的话,请给我一个例子。谢谢!

推荐答案

注释特定数据库中的架构的示例:

正在准备安装程序:

CREATE DATABASE TEST3; CREATE SCHEMA TEST1; CREATE SCHEMA TEST2; SELECT CATALOG_NAME, SCHEMA_NAME, COMMENT FROM TEST3.INFORMATION_SCHEMA.SCHEMATA;

步骤:

CREATE OR REPLACE PROCEDURE test_proc(DB_NAME STRING) RETURNS STRING LANGUAGE SQL AS $$ DECLARE TABLE_NAME STRING; QUERY STRING; OUTPUT STRING DEFAULT ''; c1 CURSOR FOR SELECT SCHEMA_NAME FROM TABLE(?) WHERE SCHEMA_NAME != 'INFORMATION_SCHEMA'; BEGIN TABLE_NAME := CONCAT(DB_NAME, '.INFORMATION_SCHEMA.SCHEMATA'); OPEN c1 USING (TABLE_NAME); FOR rec IN c1 DO QUERY := 'COMMENT ON SCHEMA ' || DB_NAME || '.' || rec.SCHEMA_NAME || ' IS ''test_comment'';'; OUTPUT := OUTPUT || QUERY; EXECUTE IMMEDIATE :QUERY; END FOR; RETURN :OUTPUT; END; $$;

呼叫:

CALL test_proc('TEST3');

输出:

更多推荐

Snowflake SQL存储过程中的动态SQL

本文发布于:2023-10-17 12:50:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1500948.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:过程中   动态   Snowflake   SQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!