Sei sulla pagina 1di 5

Funciones oracle:

SQL> CREATE FUNCTION get_bal (acc_no IN NUMBER)


1> RETURN NUMBER
2> IS
3> acc_bal NUMBER(11,2); /* declaracin de una variable */
4> BEGIN
5> SELECT balance
6> INTO acc_bal /* asignacin */
7> FROM accounts
8> WHERE account_id = acc_no;
9> RETURN(acc_bal);
10> END
Introduccion:

ABS(n)= Devuelve el valor absoluto de (n).
CEIL(n)=Obtiene el valor entero inmediatamente superior o igual a "n".
FLOOT(n) = Devuelve el valor entero inmediatamente inferior o igual a "n".
MOD (m, n)= Devuelve el resto resultante de dividir "m" entre "n".
NVL (valor, expresin)= Sustituye un valor nulo por otro valor.
POWER (m, exponente)= Calcula la potencia de un numero.
ROUND (numero [, m])= Redondea nmeros con el numero de dgitos de precisin
indicados.
SIGN (valor)= Indica el signo del "valor".
SQRT(n)= Devuelve la raz cuadrada de "n".
TRUNC (numero, [m])= Trunca nmeros para que tengan una cierta cantidad de dgitos
de precisin.
VAIRANCE (valor)= Devuelve la varianza de un conjunto de valores.

Funciones de grupos de valores:

AVG(n)= Calcula el valor medio de "n" ignorando los valores nulos.
COUNT (* | Expresin)= Cuenta el numero de veces que la expresin evala algn dato
con valor no nulo. La opcin "*" cuenta todas las filas seleccionadas.
MAX (expresin)= Calcula el mximo.
MIN (expresin)= Calcula el mnimo.
SUM (expresin)= Obtiene la suma de los valores de la expresin.
GREATEST (valor1, valor2)= Obtiene el mayor valor de la lista.
LEAST (valor1, valor2)= Obtiene el menor valor de la lista.

Funciones que devuelven valores de caracteres:

CHR(n) = Devuelve el carcter cuyo valor en binario es equivalente a "n".
CONCAT (cad1, cad2)= Devuelve "cad1" concatenada con "cad2".
LOWER (cad)= Devuelve la cadena "cad" en minsculas.
UPPER (cad)= Devuelve la cadena "cad" en maysculas.
INITCAP (cad)= Convierte la cadena "cad" a tipo titulo.
LPAD (cad1, n[,cad2])= Aade caracteres a la izquierda de la cadena hasta que tiene
una cierta longitud.
RPAD (cad1, n[,cad2])= Aade caracteres a la derecha de la cadena hasta que tiene una
cierta longitud.
LTRIM (cad [,set])= Suprime un conjunto de caracteres a la izquierda de la cadena.
RTRIM (cad [,set])= Suprime un conjunto de caracteres a la derecha de la cadena.
REPLACE (cad, cadena_busqueda [, cadena_sustitucion])= Sustituye un carcter o caracteres
de una cadena con 0 o mas caracteres.
SUBSTR (cad, m [,n])= Obtiene parte de una cadena.
TRANSLATE (cad1, cad2, cad3)= Convierte caracteres de una cadena en caracteres
diferentes, segn un plan de sustitucin marcado por el usuario.

Funciones que devuelven valores numricos:

ASCII(cad)= Devuelve el valor ASCII de la primera letra de la cadena "cad".
INSTR (cad1, cad2 [, comienzo [,m]])= Permite una bsqueda de un conjunto de
caracteres en una cadena pero no suprime ningn carcter despus.
LENGTH (cad)= Devuelve el numero de caracteres de cad.

Funciones para el manejo de fechas:

SYSDATE= Devuelve la fecha del sistema.
ADD_MONTHS (fecha, n)= Devuelve la fecha "fecha" incrementada en "n" meses.
LASTDAY (fecha)= Devuelve la fecha del ltimo da del mes que contiene "fecha".
MONTHS_BETWEEN (fecha1, fecha2)= Devuelve la diferencia en meses entre las fechas
"fecha1" y "fecha2".
NEXT_DAY (fecha, cad)= Devuelve la fecha del primer da de la semana indicado por
"cad" despus de la fecha indicada por "fecha".

Funciones de conversin:

TO_CHAR= Transforma un tipo DATE NUMBER en una cadena de caracteres.
TO_DATE= Transforma un tipo NUMBER CHAR en DATE.
TO_NUMBER= Transforma una cadena de caracteres en NUMBER
EJEMPLOS:
Ejemplo 19-2. Una simple funcin PL/pgSQL para incrementar un entero.
Esta funcin recibe un entero y lo incrementa en uno, retornando el valor incrementado.
CREATE FUNCTION add_one (integer) RETURNS INTEGER AS '
BEGIN
RETURN $1 + 1;
END;
' LANGUAGE 'plpgsql';
Ejemplo 19-3. Una simple funcin PL/pgSQL para concatenar texto.
Esta funcin recibe dos parmetros de texto y retorna el resultado de su unin.
CREATE FUNCTION concat_text (TEXT, TEXT) RETURNS TEXT AS '
BEGIN
RETURN $1 || $2;
END;
' LANGUAGE 'plpgsql';

Ejemplo 19-4. Una funcin PL/pgSQL para composicin de texto.
En ste ejemplo, tomamos EMP (una tabla) y un entero com argumentos de nuestra funcin, la cual retorna un
booleano. Si el campo salary de la tabla EMP es NULL, nosotros retornamos f. De lo contrario comparamos dicho campo
con el entero pasado a la funcin y retornamos el resultado booleano de la comparacin ( t o f).
CREATE FUNCTION c_overpaid (EMP, INTEGER) RETURNS BOOLEAN AS '
DECLARE
emprec ALIAS FOR $1;
sallim ALIAS FOR $2;
BEGIN
IF emprec.salary ISNULL THEN
RETURN ''f'';
END IF;

RETURN emprec.salary > sallim;
END;
' LANGUAGE 'plpgsql';

Ejemplo 19-1. Un Ejemplo de Procedimiento Trigger en PL/pgSQL
Este trigger asegura que en cualquier momento en que una fila sea insertada o actualizada en la tabla, el actual
nombre de usuario y fecha/hora son almacenadas en la fila. Y garantiza que un nombre de empleado es dado y que el
salario es un valor positivo.
CREATE TABLE emp (
nombre_empleado text,
salario integer,
ultima_fecha timestamp,
ultimo_usuario text );

CREATE FUNCTION emp_stamp () RETURNS TRIGGER AS '
BEGIN
-- Comprueba que se proporcionan nombre_empleado y salario
IF NEW.nombre_empleado ISNULL THEN
RAISE EXCEPTION ''El nombre del empleado no puede ser un valor NULO'';
END IF;

IF NEW.salario ISNULL THEN
RAISE EXCEPTION ''% no puede tener un salario NULO'', NEW.nombre_empleado;
END IF;

-- Quin trabaja gratis?
IF NEW.salario < 0 THEN
RAISE EXCEPTION ''% no puede tener un salario negativo'', NEW.nombre_empleado;
END IF;

-- Recuerda quin y cundo hizo el cambio
NEW.ultima_fecha := ''now'';
NEW.ultimo_usuario := current_user;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();
PROCEDURE:
Puedes rellenur dutos en tublus utlllzundo subprogrumus (funclones, procedlmlentos) de
orucle metlendo INSERT. Esto se puede hucer. Por e|emplo :
Cdlgo:

create table PP
(
ID NUMBER,
TXT VARCHAR2(1000)
)
Cdlgo:

create or replace procedure rellena_pp is
i INTEGER ;

begin

FOR i IN 1..10 LOOP

INSERT INTO pp VALUES ( i, to_char(i) ) ;

END LOOP ;

commit work ;

end rellena_pp;
Esto generur 10 reglstros en lu tublu PP con los vulores del indlce utlllzudo puru el
bucle .

Puru lo otro que preguntus de ucceder u scrlpts del slstemu operutlvo echule un
vlstuzo u lu pglnu usktom.com y buscu por 'execute commund' uhi te sulen vurlos
urticulos .

Sulu2
Puedes rellenur dutos en tublus utlllzundo subprogrumus (funclones, procedlmlentos) de
orucle metlendo INSERT. Esto se puede hucer. Por e|emplo :
Cdlgo:

create table PP
(
ID NUMBER,
TXT VARCHAR2(1000)
)
Cdlgo:

create or replace procedure rellena_pp is
i INTEGER ;

begin

FOR i IN 1..10 LOOP

INSERT INTO pp VALUES ( i, to_char(i) ) ;

END LOOP ;

commit work ;

end rellena_pp;
Esto generur 10 reglstros en lu tublu PP con los vulores del indlce utlllzudo puru el bucle .

Puru lo otro que preguntus de ucceder u scrlpts del slstemu operutlvo echule un vlstuzo u lu
pglnu usktom.com y buscu por 'execute commund'

Potrebbero piacerti anche