Categoría:DEV FUNCIONES

De Pragma Wiki
Ir a la navegación Ir a la búsqueda

Introducción

Diagrama de funciones.

Las funciones (ver Funciones) realizan un cálculo sobre un conjunto de valores recibido como argumentos y devuelven un valor único. Hay distintos tipos de funciones en SQL SERVER.

Las funciones del catálogo pueden ser creadas en la base de datos o no:

  • Si se crean en la BD pueden ser usadas en cualquier código de la aplicación.
  • Si no se crean en la base de datos solo pueden ser usadas en algún proceso como el de liquidación de haberes (esto no está documentado).

Tablas

Las tablas necesarias son:

Como armar la función

Como ejemplo, usamos una función denominada SALDO_ARTICULO que tiene un argumento FARTICULO: VARCHAR(24) representando el código de articulo cuyo stock queremos averiguar, el stock se retorna en un NUMERIC(20,2).

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'SALDO_ARTICULO') DROP FUNCTION SALDO_ARTICULO
GO
CREATE FUNCTION SALDO_ARTICULO
(
@FARTICULO VARCHAR(24)
)
RETURNS
NUMERIC(20,2)
AS
BEGIN
DECLARE @FSALDO NUMERIC(20,2) = 0

IF EXISTS (SELECT * FROM ART WHERE ART.FCODIGO = @FARTICULO)
   BEGIN
   SET @FSALDO = (SELECT SUM(ARTMOVTABLA.FCANTIDAD) FROM ARTMOVTABLA WHERE ARTMOVTABLA.FARTICULO = @FARTICULO)
   END

RETURN @FSALDO
END
GO

En la tabla DEV FUNCIONES definimos una función llamada SALDO_ARTICULO que retorna NUMERIC(20,2).

En la tabla DEV FUNCIONES/ARGUMENTOS definimos un solo argumento denominado FARTICULO de tipo VARCHAR(24).

Y en el DEV FUNCIONES/DETALLE definimos:

DECLARE @FSALDO NUMERIC(20,2) = 0

IF EXISTS (SELECT * FROM ART WHERE ART.FCODIGO = @FARTICULO)
   BEGIN
   SET @FSALDO = (SELECT SUM(ARTMOVTABLA.FCANTIDAD) FROM ARTMOVTABLA WHERE ARTMOVTABLA.FARTICULO = @FARTICULO)
   END

RETURN FSALDO = @FSALDO

Todos los comandos necesarios para crear la función correctamente los agrega el sistema.

Notar que:

  • No tenemos que incluir el CREATE.
  • Registramos el código entre el primer BEGIN y el último END.
  • No tenemos que incluir el GO final.

Respecto del valor de retorno:

  • En los comandos usados para crear la función en la base de datos usamos RETURN @FSALDO.
  • En cambio, al cargar los comandos tenemos que usar RETURN FSALDO = @FSALDO, anteponiendo un nombre de campo al valor retornado.

Este ejemplo aplica a funciones que se crean en la base de datos (tienen el campo AplicaEnServdor marcado) o aquellas que solo se usan dentro de los procedimientos del sistema (tienen el campo AplicaEnServidor desmarcado).

Páginas en la categoría «DEV FUNCIONES»

Las siguientes 3 páginas pertenecen a esta categoría, de un total de 3.