Кажется, в вашей процедуре есть синтаксическая ошибка. Будьте осторожны с тем, как вы избежали одиночной кавычки. Трудно отладить его, не видя фактического источника, но вот пример сценария, демонстрирующий, что с константным значением нет ничего особенного:
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;