Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

152
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!