Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

150
Vistas
¿Cómo recuperar dinámicamente el nombre de la base de datos del procedimiento de ejecución en Snowflake?

Dentro de un procedimiento almacenado de Snowflake JavaScript, me gustaría recuperar el nombre de la base de datos del procedimiento de ejecución (y preferiblemente también el nombre del esquema). Se puede hacer esto? Y si es así, ¿cómo?

¿Por qué?

  1. El procedimiento genera SQL dinámico para las tablas que se espera que estén en la misma base de datos que el SP, utilizando nombres de objeto totalmente calificados.
  2. El objetivo es que tanto estas tablas (semigenéricas) como el procedimiento se implementen en varias bases de datos según corresponda, utilizando DDL de tabla/procedimiento idénticos (almacenados en VCS).
  3. Si realmente tiene curiosidad, esto es para el aprovisionamiento automatizado de acceso de seguridad de nivel de fila de múltiples inquilinos a través de Tableau, a una variedad de entornos y bases de datos diferentes en Snowflake.

Nota: No puede depender de la sesión actual, ya que podría ser con una base de datos diferente, mientras se llama al procedimiento almacenado de una base de datos diferente utilizando el nombre completo. (es decir <database>.<schema>.<procedure> )

También tenga en cuenta: no es tan simple como definirlo estáticamente dentro del procedimiento, ya que esto es algo que podría implementarse en múltiples bases de datos (es decir, diferentes entornos), y no es práctico cambiar el cuerpo del SP para cada uno.

Algunos enfoques conceptuales podrían ser...

Usando un objeto JavaScript incorporado como este (que obtiene solo el nombre del procedimiento):

 var proc_name = Object.keys(this)[0];

Usando una función SQL incorporada como esta (que recupera la base de datos de la sesión, no la base de datos del procedimiento):

 var result = snowflake.execute({sqlText: 'select current_database()'}); result.next(); var db_name = result.getColumnValue(1);

¿O, otra solución creativa?

Si no es posible, ¿tal vez alguien pueda indicarme una solicitud de función de Snowflake existente?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda