#snowflake-cloud-data-platform
Вопрос:
Попытка запустить таблицу описания и запуск RESULT_SCAN по идентификатору запроса запроса таблицы описания.
Процедура:
var qry = ` describe table TEST_TABLE `;
var qry_rslt = snowflake.execute({sqlText: qry});
var qry_id= qry_rslt.getQueryId();
var qry2 = ` select * from table(result_scan('` qry_id `')) `
snowflake.execute({sqlText: qry2});
Процедура возвращает значение Null и не запускает SQL. При ручном запуске запроса на проверку результатов в нем говорится, что оператор не найден.
Любая идея, как прочитать, описывает результат.
Ответ №1:
На самом деле вы не читаете результаты второго запроса. Он запускает его, но не собирает результаты. При этом будет собран только первый столбец результирующего набора:
create or replace procedure test()
returns string
language javascript
as
$
var qry = ` describe table TEST_TABLE `;
var qry_rslt = snowflake.execute({sqlText: qry});
var qry_id= qry_rslt.getQueryId();
var qry2 = ` select * from table(result_scan('${qry_id}')) `;
rs = snowflake.execute({sqlText: qry2});
var out = "";
var i = 0;
while (rs.next()) {
if (i > 0) out = ",";
out = rs.getColumnValue(1);
}
return out;
$;
call test();
Вы хотите получить весь DDL в одном заявлении? Если это так, вы можете запустить get_ddl
, а затем прочитать только первую строку, первый столбец. У него будет DDL для всей таблицы. Если вам нужна таблица, вам нужно прочитать строки и столбцы, чтобы сделать с ними то, что нужно сделать.