Datu-base estekak, MySQL erreplikazioa eta PL/SQL prozedurak: gida praktikoa

Inglés3,1 KB

Link = tabla@link

MySQL = dbo+tabla@link;
SQL>

Datu-base esteka sortzea

CREATE DATABASE LINK dblink_name
CONNECT TO username IDENTIFIED BY password
USING 'DBserver';

MySQL datu-base adibidea eta erreplikazioa

CREATE DATABASE erreplikazio_adibidea;
USE erreplikazio_adibidea;
CREATE TABLE taula1 (ID INTEGER PRIMARY KEY, Izena VARCHAR(20));
INSERT INTO taula1 VALUES (1, 'Aitor'), (2, 'Maren'), (3, 'Beñat');
SELECT * FROM taula1;
GRANT REPLICATION SLAVE ON *.* TO 'erreuser'@'192.168.0.2' IDENTIFIED BY '1234';
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
UNLOCK TABLES;

Oracle PL/SQL prozedura: langileari lana eguneratzea

CREATE OR REPLACE PROCEDURE P_10_20_LANGILEARI_LANAALDATU (v_langile_berria_id NUMBER, v_lana_izena VARCHAR2) AS
  v_lana_id lanak.lana_id%TYPE;
  lanaexistentzia NUMBER;
BEGIN
  SELECT COUNT(lana_izena) INTO lanaexistentzia FROM lanak WHERE lana_izena = v_lana_izena;
  IF lanaexistentzia = 0 THEN
    v_lana_id := UPPER(SUBSTR(v_lana_izena, 0, 2)) || '_' || UPPER(SUBSTR(v_lana_izena, (LENGTH(v_lana_izena) - 2), 3));
    INSERT INTO lanak VALUES (v_lana_id, v_lana_izena, NULL, NULL);
    dbms_output.put_line(v_lana_izena || ' lanpostua sortu da: ' || v_lana_id || ' identifikatzailearekin.');
  ELSE
    SELECT lana_id INTO v_lana_id FROM lanak WHERE v_lana_izena = lana_izena;
  END IF;
  UPDATE langileak SET lana_id = v_lana_id WHERE langilea_id = v_langile_berria_id;
  dbms_output.put_line(v_langile_berria_id || ' IDa daukan langileari, hurrengo lanpostua esleitu zaio: ' || v_lana_izena);
END P_10_20_LANGILEARI_LANAALDATU;

CREATE OR REPLACE FUNCTION F_10_22_EXTRA_SARIA
  (a_langile_id IN LANGILEAK.LANGILEA_ID%TYPE, a_lanpostuaren_izena IN LANAK.LANA_IZENA%TYPE,
   a_langile_izena_berria OUT LANGILEAK.IZENA%TYPE, a_langile_abizena OUT LANGILEAK.ABIZENA%TYPE)
RETURN LANGILEAK.SOLDATA%TYPE
AS
  a_lana_izena LANAK.LANA_IZENA%TYPE;
  a_soldata_igoera FLOAT;
  a_win VARCHAR2(7);
  a_soldata_berria LANGILEAK.SOLDATA%TYPE;
BEGIN
  SELECT lana_izena INTO a_lana_izena FROM lanak
    WHERE lana_id = (SELECT lana_id FROM langileak WHERE langilea_id = a_langile_id);
  IF a_lana_izena = a_lanpostuaren_izena THEN
    a_soldata_igoera := 0.75;
    a_win := '_WIN_75';
  ELSE
    a_soldata_igoera := 0.25;
    a_win := '_WIN_25';
  END IF;
  UPDATE langileak SET soldata = soldata * (1 + a_soldata_igoera) WHERE langilea_id = a_langile_id;
  UPDATE langileak SET izena = izena || a_win WHERE langilea_id = a_langile_id;
  SELECT L.izena, L.abizena, L.soldata INTO a_langile_izena_berria, a_langile_abizena, a_soldata_berria
    FROM langileak L WHERE langilea_id = a_langile_id;
  RETURN a_soldata_berria;
END F_10_22_EXTRA_SARIA;

Descargar

PDF Word HTML