Tips.cl

Bases de Datos

Activar o Desactivar Triggers SQLServer

by MigueliTUX on May.06, 2009, under SqlServer, Windows


-- Desactiva el trigger TR_CUENTAS

DISABLE TRIGGER TR_CUENTAS ON CUENTAS

GO

-- activa el trigger TR_CUENTAS

ENABLE TRIGGER TR_CUENTAS ON CUENTAS

GO

-- Desactiva todos los trigger de la tabla CUENTAS

ALTER TABLE CUENTAS DISABLE TRIGGER ALL

GO

-- Activa todos los trigger de la tabla CUENTAS

ALTER TABLE CUENTAS ENABLE TRIGGER ALL

Donde CUENTAS es una tabla y TR_CUENTAS es un triggers asociado a dicha tabla

6 Comentarios :, , más...

Como conocer la versión de MySQL

by MigueliTUX on Apr.17, 2009, under MySql

para conocer la versión solo debes tipear

SELECT VERSION();
5 Comentarios :, más...

Cambiar IDENTITY en SQLSERVER

by MigueliTUX on Apr.08, 2009, under SqlServer

Para cambiar el Identity de una tabla debemos usar el comando

DBCC

por ejemplo tengo la siguiente tabla

Create Table X(Id int Identity(1,1),Nombre Varchar(20))

y he insertado varios registros

insert into X (nombre) values (’Miguel’)

insert into X (nombre) values (’Juan’)

Con eso el ID debe estar en 2 y el siguiente regitro que ingrese será el 3

si le hacemos un delete a la tabla, esta mantendre el identity y si vuelvo a insertar otro registro

el ID será 3.

si quieres que el ID vuelva a 1 debes usar:

DBCC CHECKIDENT (<nombre_tabla>, RESEED, 0)

Donde

<nombre_tabla> es X (segun nuestro ejemplo)

y el 0 corresponde al numero que quieras que parta el Identity, al dejarlo en CERO estas haciendo que el siguiente ID sea 1

4 Comentarios :, , , más...

Ejemplos de PL/pgSQL

by MigueliTUX on Apr.05, 2009, under PostgreSQL

Buscar un cliente y retornar si existe o no

CREATE OR REPLACE FUNCTION buscar_cliente (varchar)
RETURNS
bool AS
DECLARE
rut_buscar alias for $1;
registro clientes%ROWTYPE;
/* Notese que aqui definimos la variable registro del tipo FILA de clientes
indicando la tabla, el simbolo % y luego la palabra reservada ROWTYPE
*/
BEGIN
SELECT INTO registro * FROM clientes
WHERE rut_cliente = rut_buscar;
IF FOUND THEN
RETURN true;
END IF;
RETURN false;
END;
LANGUAGE ‘plpgsql’;

LLAMADA SELECT buscar_cliente(’12000111-2′);

Buscar un producto y actualiza su precio segun porcentaje

CREATE OR REPLACE FUNCTION actualizar_producto (varchar, real)
RETURNS
bool AS
DECLARE
producto ALIAS FOR $1;
porcentaje ALIAS FOR $2;
registro productos%ROWTYPE;
BEGIN
SELECT INTO registro * FROM productos
WHERE id_producto = producto;
IF FOUND THEN
UPDATE productos SET
precio_venta = precio_venta + (precio_venta * porcentaje)
WHERE id_categoria = categoria;
RETURN true;
END IF;
RETURN false;
END;
‘ LANGUAGE
‘plpgsql’;

LLAMADA SELECT actualizar_producto(’PRO-0540′,0.03)

Suma 2 valores

CREATE OR REPLACE FUNCTION suma (real, real)
RETURNS real AS
DECLARE
valor_1 ALIAS FOR $1;
valor_2 ALIAS FOR $2;
total
real;
BEGIN
total := valor_1 + valor_2;
RETURN total;
RETURN;
END;
‘ LANGUAGE
‘plpgsql’;

LLAMADA SELECT suma(3,4)

3 Comentarios :, más...

SENTENCIAS DE CONTROL PARA POSTGRES

by MigueliTUX on Apr.05, 2009, under PostgreSQL

  • SENTENCIA DE CICLO LOOP :
  • Esta sentencia nos permite efectuar un ciclo, su estructura básica es :

    …resto de la funcion…
    LOOP

    …sentencias a ejecutar en el ciclo…
    END LOOP
    …resto de la funcion…
  • SENTENCIA DE SALIDA EXIT :
  • Cuando usamos un ciclo LOOP, es necesario darle una salida para que este mismo termine, la sentencia EXIT nos permite finalizar el LOOP y continuar en la sentencia siguente a la salida de éste, generalmente, EXIT está acompañado con la sentencia IF, por ejemplo

    LOOP
    …resto de la funcion…
    contador := contador + 1;

    IF contador >= 10 THEN
    EXIT; — salida del loop cuando sea mayor o igual que 10
    END IF;
    END LOOP
    …resto de la funcion…
  • SENTENCIAS IF, ELSE :
  • Podemos efectuar operaciones de comparación con las sentencias IF, ELSE, los operadores de comparación son los siguientes :

    < menor que …
    > mayor que …
    <> distinto a …
    <= menor o igual que …
    >= mayor o igual que …
    = igual que …
    OR o …
    AND y …

    Ejemplo :

    …resto de la funcion…
    IF >= 10 or THEN
    RETURN true;

    ELSE
    RETURN false;
    END IF;
    …resto de la funcion…

  • SENTENCIA DE CICLO FOR :

    Existen dos tipos de ciclos FOR, el primero tiene que ver claramente con los ciclos numéricos comunes, es decir, lo que comunmente se usa para efectuar repeticiones, y por otra parte, tenemos un ciclo FOR que nos permite recorrer tablas y procesar sus datos, esta segunda está ligada a sentencias SQL, veamos entonces como se utiliza la sentencia FOR

    CASO 1 : SENTENCIA FOR DE PROCESO CICLICO NUMERICO

  • FOR <variable> IN <inicio>..<fin> LOOP
    … SENTENCIAS A EJECUTAR DENTRO DEL CICLO FOR …
    END LOOP;

    o bien puede usar el FOR de forma inversa

    FOR <variable> REVERSE <fin>..<inicio> LOOP
    … SENTENCIAS A EJECUTAR DENTRO DEL CICLO FOR …
    END LOOP;

    Ejemplo :

    …resto de la funcion…
    FOR inc IN 1..10 LOOP
    factorial := factorial * inc;
    END LOOP;
    RETURN factorial;
    …resto de la funcion…

    CASO 2: SENTENCIA FOR APLICADA A PROCESOS DE REGISTROS SQL

    FOR <registro o fila> IN <sentencia SELECT SQL> LOOP
    … SENTENCIAS A EJECUTAR DENTRO DEL CICLO FOR …
    END LOOP;

    Ejemplo :

    …resto de la funcion…
    DECLARE
    registro RECORD;
    BEGIN
    FOR registro IN SELECT * FROM productos LOOP
    stock := registro.sock_actual + 100;
    … otras sentencias …
    END LOOP;
    …resto de la funcion…

    Note que para utilizar esta sentencia FOR debemos declarar una variable de tipo RECORD o registro. RECORD es una palabra reservada para estos casos, y no posee una estructura definida pues no ha sido asignada a ninguna tabla, este tipo de dato nos permite recorrer la tabla de productos y obtener sus valores por medio de esta variable.

  • SENTENCIA DE CICLO CONDICIONAL WHILE

    La sentencia WHILE se ejecuta de forma muy similar a otros lenguajes de programación, su estructura es la siguiente :

  • WHILE <condicion> LOOP
    … SENTENCIAS A EJECUTAR DENTRO DEL CICLO WHILE …
    END LOOP;

    Ejemplo :

    …resto de la funcion…
    WHILE inc <= 10 LOOP
    factorial := factorial * inc;
    END LOOP;
    RETURN factorial;
    …resto de la funcion…

    Este codigo funciona igual al descrito en el ejemplo del ciclo FOR.

    4 Comentarios :, más...

    Buscas algun tips?

    Busca aquí:

    contactate con nosotos contacto@tips.cl

    Visita nuestras Web amigas!

    Web Amigas...