Uso de procedimientos almacenados en Snowflake

Uso de procedimientos almacenados en Snowflake

  • Orquestación
6 min de lectura Actualizado Oct 29, 2020

Puntos clave: Los procedimientos almacenados en Snowflake permiten a los usuarios ejecutar secuencias de comandos para procesamiento por lotes y gestión de eventos usando JavaScript para la gestión de variables y el manejo de errores. Un tutorial demuestra cómo crear procedimientos para actualizar los precios de los pedidos.

  • Los procedimientos almacenados facilitan operaciones similares a lotes.
  • JavaScript está necesario para crear procedimientos almacenados en Snowflake.

Snowflake soporta procedimientos almacenados. Los procedimientos almacenados permiten te escribir una serie de comandos y almacena los para su uso posterior.

Cuándo utilizar un procedimiento almacenado

Anteriormente hemos cubierto funciones definidas por el usuario (UDFs), que te utiliza en una columna. Un procedimiento almacenado se ejecuta solo. En otras palabras, se activa y "hace algo", como actualizar una tabla. Por eso los procedimientos almacenados son buenos para acciones tipo batch. te también pueden vincular condicionalmente procedimientos almacenados a eventos de base de datos, no muy diferente de lo que se llama disparador en otros productos de bases de datos. Los ingenieros de datos también pueden Haz una pipeline de datos con procedimientos almacenados. (Un tema que exploraremos en profundidad en las próximas publicaciones.)

JavaScript para procedimientos almacenados

Los procedimientos almacenados Snowflake deben escribirse en JavaScript. Tiene sentido que te deba utiliza un lenguaje de programación además de SQL, ya que SQL no soporta asignación de variables. te Crea variables para hacer cálculos, etc. No te preocupes si no te sabes JavaScript: te simplemente copiar código estándar y poner SQL en la ubicación correcta. SQL están realmente la única parte que varía, en su mayoría. Así que no están mucho te que necesite entender. JavaScript Snowflake están JavaScript básico. No permite importar te librerías que son externas al lenguaje. Así que te puede Crea arrays, variables, objetos simples y están gestión de errores. te Pero no podría, por ejemplo, utiliza funciones matemáticas de la biblioteca Math

Tutorial línea por línea: Procedimiento almacenado

Pondremos un ejemplo sencillo aquí y explicaremos cada línea del código. (Así que no te necesitas ningún dato de muestra.) Mira la función a continuación. Fíjate en lo siguiente:

  • te poner parámetros en la función función nombre de la función (tipo de parámetros)
  • te llamar a la función escribiendo llamar a la función nombre(parámetros).
  • La función debe devolver algún valor, aunque solo están actualizando. De lo contrario, te Obtén el error NULL en una columna no nullable. Esto están porque el editor de hojas de cálculo en Snowflake necesita algo que muestre, incluso si es un valor nulo (Nan).
  • El procedimiento básico están utiliza ejecutar() para ejecutar código SQL que te tener almacenado en una cadena. Los programadores de bases de datos saben que eso crea lo que están llama un conjunto de resultados. Así que te necesitas extraer el primer valor retornado al alcance llamando a next(). están Hay un conjunto de resultados con una sentencia select, eliminar, insertar e incluso actualizar, aunque te no esperaría que esos devolvieran valores.
  • Si la sentencia SQL devuelve más de una fila, como en un SELECT, te utilizarías un tiempo (rs.next()) para recorrer los resultados en un bucle.
  • Por alguna razón, los parámetros pueden ser minúsculas pero deben estar en mayúsculas dentro del código JavaScript. te Obtén un error si te intentas utiliza minúsculas.
    create or replace procedure setprice(ORDERNUMBER varchar(100))
    returns float 
    not null
    language javascript
    as
    $$
  
     
    sql_command = "update orders set price = 2 where ordernumber = " + ORDERNUMBER   ;
    
   
    var stmt = snowflake.createStatement(
           {
           sqlText: sql_command
           }
        );
    var res = stmt.execute();
    res.next()
    
    price = res.getColumnValue(1);
    return price;
     
  
    $$
    ;
 
 call setprice(489)

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Orquestación

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.