Извлечение двух столбцов из таблицы с помощью хранимой процедуры в Snowflake

#javascript #sql #stored-procedures #snowflake-cloud-data-platform #snowflake-schema

#javascript #sql #хранимые процедуры #snowflake-cloud-data-platform #snowflake-схема

Вопрос:

Я пытаюсь извлечь данные из таблицы с помощью функции и сохранить их в массиве. Но когда я попытался вернуть один из двух массивов, я не получил никаких данных. Не понимаю, где я ошибаюсь.

 CREATE OR REPLACE PROCEDURE GET_DATE()
        RETURNS VARCHAR NOT NULL
        LANGUAGE JAVASCRIPT
        AS
        $$
            var array1 = [];
            var array2 = [];
            array1,array2 = get_columns_data(); // want to get those two array values from the function for further use
            return array1; //This is not printing or returning anything

            function get_columns_data()
            {
                var arr1 = [];
                var arr2 = [];
                
                cmdl = {sqlText: `SELECT COUNT(*) AS TOTAL, COUNT(DISTINCT(ID)) AS UNIQUE FROM TABLE1;`} //query to get two column values
                stmt = snowflake.createStatement(cmdl);
                
                var a = stmt.execute();
                while(a.next())
                {
                    var one = a.getColumnValue('TOTAL');
                    arr1.push(one);
                    var two = a.getColumnValue('UNIQUE');
                    arr2.push(two);
                }
                return arr1,arr2;  //returning two arrays; Don't know if this is the correct method to return two arryas
            }
        $$
  

Ответ №1:

Эта строка не будет работать на JavaScript:

 return arr1,arr2;
  

Вместо этого вы можете вернуть массив массивов:

 return [arr1,arr2];
  

Затем вы можете получить массив массивов в одном переменном:

 arrays = get_columns_data();
  

Тестирование того, как возврат с запятой не будет работать, а затем исправление с помощью возврата массива:

введите описание изображения здесь