CREATE OR REPLACE PROCEDURE view_proc()
returns varchar
language javascript
as
$$
var list_of_tables=['TEST','TEST1'];
var loop_len=list_of_tables.length;
var results = "";
for(var i=0;i<loop_len;i++){
try{
var sql_statement=" ";
var get_databases_stmt="SELECT DATABASE_NAME FROM SNOWFLAKE.INFORMATION_SCHEMA.DATABASES WHERE DATABASE_NAME LIKE 'TEST%'";
var get_databases_stmt= snowflake.createStatement({sqlText:get_databases_stmt });
var database_list=get_databases_stmt.execute();
while(database_list.next()){
var database_name=database_list.getColumnValue(1);
var st= "SHOW TABLES LIKE " + " " +list_of_tables[i]+"" + " IN DATABASE " +database_name;
var table_list= snowflake.execute({sqlText: st});
if (table_list.getRowCount() > 0)
{
sql_statement +="SELECT * FROM " + database_name + ".PUBLIC." + list_of_tables[i] +" UNION ALL ";
}
}
if (sql_statement.length > 0)
{
sql_statement = sql_statement.slice(0, -11);
sql_statement = "CREATE OR REPLACE VIEW " + " TEST.PUBLIC. "+ list_of_tables[i] + "ALL " + " AS " + sql_statement;
snowflake.execute({sqlText: sql_statement});
}
}//end for try
catch (err) {
return "Failed: " + err; // Return a success/error indicator.
}
}
return "all view created";
$$
;
- 如果表存在,则合并所有来自不同数据库的内容。
- 如果表不存在于任何数据库中,则 Union all 不应失败。
- ERROR:-Failed: SQL compilation error: syntax error line 1 at position 18 unexpected 'TEST'.