Снежинка мини динамическая c значение привязки и постоянное значение - PullRequest
0 голосов
/ 07 апреля 2020

Я должен передать значение Dynami c в качестве имени моего столбца в мою таблицу из l oop и постоянного значения. Мой фрагмент кода выглядит примерно так: Пока (res.next ()) {var columnname = res.getColumnValue (1); var stmt = insert into table1(column1,column2,column3) select column1,'Too Long', + имя столбца + from table2; \ var result = \ Snowke.createStatement (stmt); \ выполнение оператора

Получение ошибки в качестве неверного идентификатора, если я передаю постоянное значение. Как мы можем этого добиться?

1 Ответ

0 голосов
/ 07 апреля 2020

Кажется, в вашей процедуре есть синтаксическая ошибка. Будьте осторожны с тем, как вы избежали одиночной кавычки. Трудно отладить его, не видя фактического источника, но вот пример сценария, демонстрирующий, что с константным значением нет ничего особенного:

CREATE or REPLACE PROCEDURE TEST( VAR1 VARCHAR)
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS '
var columnname = VAR1

for (var i = 0; i< 5; i++){
    var stmt = snowflake.createStatement( { sqlText: "insert into table1(column1,column2,column3) select column1,''Too Long''," + columnname + " from table2" } ); 
    res = stmt.execute();
    }   
return ''YES''
';

Чтобы протестировать описанную выше процедуру, я создаю две таблицы и вставляю строку в table2:

create table table1(column1 varchar,column2 varchar,column3 varchar);

create table table2(column1 varchar,columnX varchar);

insert into table2 values ('testing','secretcol');

Я вызываю процедуру с переменной "columnX", я не хотел писать более сложную процедуру для чтения имени столбца из 3-й таблицы:

call test( 'columnX' );

Когда я запрашиваю В таблице 1 я вижу 5 записей. Каждая строка содержит значения «testing», «Too long» и «secretcol».

select * from table1;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...