100132 (P0000): JavaScript ошибка выполнения: Uncaught ReferenceError: - PullRequest
1 голос
/ 03 февраля 2020

Я практикую варианты использования try и catch для хранимой процедуры. Получение ошибки num не определено. Но получается ниже полной ошибки.

100132 (P0000): JavaScript execution error: Uncaught ReferenceError: num is not defined in SP at '    var sql_comm = "insert into test_sp (col) values(" + num + ")";' position 57

stackstrace: SP line: 2

Ниже мой код

    create or replace TABLE TEST_SP (
       COL NUMBER(38,0)                                                                       
 );

create or replace procedure sp ( num float )
    returns float
    language javascript
    strict
    execute as owner
    as
    $$
    var sql_comm = "insert into test_sp values(" + num + ")";
    try {
            snowflake.execute(
                    {sqlText:sql_comm}
                );
            return "succeeded"
    }
    catch (err){
        return "failed" + err ;
    }
    $$
    ;

    call sp(2::float);

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

Параметр NUM внутри хранимой процедуры должен быть в верхнем регистре. И вы возвращаете float, но возвращаете строки / text после того, как это исправлено, поэтому в моем примере я изменил на возвращение TEXT, но я подозреваю, что это была только функция вашего тестирования.

create or replace procedure sp ( num float )
returns text
language javascript
strict
execute as owner
as
$$
var sql_comm = "insert into test_sp values(" + NUM + ")";
try {
        snowflake.execute(
                {sqlText:sql_comm}
            );
        return "succeeded"
}
catch (err){
    return "failed" + err ;
}
$$
;

работает:

call sp (2 :: float);

дает:

SP
succeeded

и проверка:

select * from test_sp;

дает:

COL
2
2
2
0 голосов
/ 05 февраля 2020

Все параметры внутри хранимой процедуры должны быть в верхнем регистре. Измените параметр на верхний регистр, и это решит проблему.

Большое спасибо, Срига

...