Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

282
Visualizações
How to pass and call Snowflake stored procedure date argument in underlying SELECT statement as a column

I am fairly new to snowflake working on a stored procedure having date as a parameter, the same parameter will be used in SELECT statement to work as additional column in result set. Below is the code:

CREATE OR REPLACE PROCEDURE test1 (TEST_DATE VARCHAR)
RETURNS VARCHAR NOT NULL
LANGUAGE javascript
EXECUTE AS CALLER
AS
$$
var prod = TEST_DATE;
var sql_stmt = `select
  ID
,Value
,getvariable('PROD') as TestDate
, to_varchar(CURRENT_TIMESTAMP()) CreateDate
from
Table;`;

var statement = snowflake.createStatement( {sqlText:sql_stmt} );
        var rs = statement.execute();
        rs.next(1);
  //return rs.getColumnValue(1);
  return rs.getColumnValue(3);
   
 $$;

Calling above procedure as

CALL test1('2022-02-22');

Returning error as "NULL result in a non-nullable column".

Please suggest how can I use the argument as column name in select.

Thank You.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Binding Variables:

Binding a variable to a SQL statement allows you to use the value of the variable in the statement.

CREATE OR REPLACE PROCEDURE test1 (TEST_DATE VARCHAR)
RETURNS VARCHAR NOT NULL
LANGUAGE javascript
EXECUTE AS CALLER
AS
$$

var sql_stmt = `select
  ID
,Value
, :1 as TestDate
, to_varchar(CURRENT_TIMESTAMP()) AS CreateDate
from Table;`;

var statement = snowflake.createStatement( {sqlText:sql_stmt, binds: [TEST_DATE]} );
var rs = statement.execute();
  ...
   
 $$;
about 4 years ago · Juan Pablo Isaza Relatório

0

I think Binding like mentioned above is the more proper method, but you could also use string formatting its a bit more readable.

CREATE OR REPLACE PROCEDURE test1 (TEST_DATE VARCHAR)
RETURNS VARCHAR NOT NULL
LANGUAGE javascript
EXECUTE AS CALLER
AS
$$
var prod = TEST_DATE;
var sql_stmt = `select
  ID
,Value
,'${TEST_DATE}' as TestDate
, to_varchar(CURRENT_TIMESTAMP()) CreateDate
from
Table;`;

var statement = snowflake.createStatement( {sqlText:sql_stmt} );
        var rs = statement.execute();
        rs.next(1);
  //return rs.getColumnValue(1);
  return rs.getColumnValue(3);
   
 $$;
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda