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

510
Visualizações
Cláusula Try&catch en secuencias de comandos de copos de nieve

Me pregunto si hay un equivalente de intentar capturar bloques de javascript en sql puro en Snowflake. Quiero tener un procedimiento que verifique todas las vistas y haga algo con ellas, pero algunas de las vistas no son válidas y quiero omitirlas. La versión de javascript se ve así:

 create or replace procedure test_views_js() returns varchar language javascript as $$ var sql = "select table_name from INFORMATION_SCHEMA.views where table_schema='TEST'"; var stmt = snowflake.createStatement ({sqlText:sql}); var result_set = stmt.execute(); var cnt = 0; while (result_set.next()){ try{ var sql_text = "select count(*) from "+result_set.getColumnValue(1); var stmt2 = snowflake.createStatement ({sqlText:sql_text}); var r = stmt2.execute(); r.next(); cnt+=r.getColumnValue(1); }catch (err){ continue } } return cnt; $$

¿Puedo lograr el mismo resultado con sql?

ACTUALIZAR

Recibo un error de sintaxis cuando intento poner una excepción en el bucle. Cuando está en un lugar diferente, la sintaxis es válida, pero 'break is outside of loop' . ¿Tal vez hay algún error tipográfico obvio que no puedo ver?

 create or replace procedure test_views() returns integer not null language sql as declare sel varchar; row_cnt integer default 0; res resultset default (select table_name from INFORMATION_SCHEMA.views where table_schema='TEST') ; c1 cursor for res; begin for row_variable in c1 do row_cnt:= (select count(*) from view_test); exception when statement_error then continue; end for; return row_cnt; end;
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Sí, hay construcciones RAISE/EXCEPTION documentadas aquí: https://docs.snowflake.com/en/developer-guide/snowflake-scripting/exceptions.html

about 4 years ago · Juan Pablo Isaza Relatório

0

Es posible usar una excepción dentro del ciclo. En vez de:

 for row_variable in c1 do row_cnt:= (select count(*) from view_test); exception when statement_error then continue; end for;

Todo el código debe envolverse con su propio bloque BEGIN EXCEPTION END .

 create or replace procedure test_views() returns integer not null language sql as declare sel varchar; row_cnt integer default 0; res resultset default (select table_name from INFORMATION_SCHEMA.views where table_schema='TEST') ; c1 cursor for res; begin for row_variable in c1 do begin row_cnt:= (select count(*) from view_test); exception when other then continue; end; end for; return row_cnt; end;
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