Advertisement
Guest User

Untitled

a guest
May 13th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 35.61 KB | None | 0 0
  1. ------Area Perimetro-----
  2. DECLARE
  3.     CURSOR rectanguloi IS SELECT * FROM rectangulo;
  4.     elrectangulo rectangulo%ROWTYPE;
  5. BEGIN
  6.     dbms_output.put_line('RID'||'   '||'AREA'||'    '||'PERIMETRO');
  7.     FOR elrectangulo IN rectanguloi LOOP
  8.         dbms_output.put_line(elrectangulo.rid||'    '|| rectangleTools.Area(elrectangulo.rid)||'        '||rectangleTools.Perimetro(elrectangulo.rid));
  9.     END LOOP;
  10. END;
  11. /
  12. ----------------------------
  13. ---------------Area Rec------------
  14. DECLARE
  15.     CURSOR rec IS SELECT * FROM rectangulo;
  16.     reci rectangulo%ROWTYPE;
  17. BEGIN
  18.     dbms_output.put_line('---------rectangulos area > 4------------');
  19.     FOR reci IN rec LOOP
  20.         IF (area_rectangulo(reci.xl,reci.yl,reci.xh,reci.yh)>4) THEN
  21.             dbms_output.put_line((reci.rid));
  22.         END IF;
  23.     END LOOP;
  24. END;
  25. ----------------------------------
  26. -------------Area >4---------------
  27. DECLARE
  28.     CURSOR rectanguloi IS SELECT * FROM rectangulo;
  29.     elrectangulo rectangulo%ROWTYPE;
  30.     area number;
  31. BEGIN
  32.     dbms_output.put_line('RID'||'   '||'AREA');
  33.     FOR elrectangulo IN rectanguloi LOOP
  34.         area:=rectangleTools.Area(elrectangulo.rid);
  35.         IF area>4 THEN
  36.             dbms_output.put_line(elrectangulo.rid||'    '||area );
  37.         END IF;
  38.     END LOOP;
  39. END;
  40. /
  41. -----------------------------------
  42. ------------Arregla Rectangulo PreparedStatement----
  43. import java.sql.*;
  44. class arreglaRectangulo{
  45.     public static void main (String args[]) throws SQLException{
  46.         DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
  47.         Connection conn= DriverManager.getConnection
  48.          ("jdbc:oracle:thin:@oracle.localdomain:1521:orcl", "mquezada", "hack3015");
  49.         Statement stmt= conn.createStatement();
  50.         ResultSet rs = stmt.executeQuery("SELECT RID,XL,XH FROM RECTANGULO");
  51.         PreparedStatement ps1=conn.prepareStatement("UPDATE RECTANGULO SET XL=? WHERE RID = ?");
  52.         PreparedStatement ps2=conn.prepareStatement("UPDATE RECTANGULO SET XH=? WHERE RID = ?");
  53.         while (rs.next()){
  54.             int rid=rs.getInt("RID");
  55.             double xl = rs.getDouble("XL");
  56.             double xh = rs.getDouble("XH");
  57.             xl=xl*0.1;
  58.             xh=xh*0.1;
  59.  
  60.             ps1.setDouble(1,xl);
  61.             ps1.setInt(2,rid);
  62.  
  63.             ps2.setDouble(1,xh);
  64.             ps2.setInt(2,rid);
  65.  
  66.             ps1.executeUpdate();
  67.             ps2.executeUpdate();
  68.         }
  69.         ps1.close();
  70.         ps2.close();
  71.     }
  72. }
  73. -----------------------------------------
  74. -----------------Cada Punto------------------
  75. DECLARE
  76.     CURSOR puntoi IS SELECT * FROM puntos;
  77.     CURSOR rectanguloi IS SELECT * FROM rectangulo;
  78.     elrectangulo rectangulo%ROWTYPE;
  79.     elpunto puntos%ROWTYPE;
  80.     contiene number;
  81. BEGIN
  82.     contiene:=0;
  83.         dbms_output.put_line('PUNTO'||'         '||'RID DE RECTANGULOS');
  84.         FOR elpunto IN puntoi LOOP
  85.                 FOR elrectangulo IN rectanguloi LOOP
  86.                         IF rectangleTools.puntoenRectangulo(elpunto.x,elpunto.y,elrectangulo.rid)=1 THEN
  87.                                 contiene:=contiene+1;
  88.                         END IF;
  89.                 END LOOP;
  90.                 --Ya se si el punto esta contenido en alguno o no
  91.                 IF contiene>0 THEN
  92.             dbms_output.put('('||elpunto.x||','||elpunto.y||')'||'      ');
  93.                     FOR elrectangulo IN rectanguloi LOOP
  94.                             IF rectangleTools.puntoenRectangulo(elpunto.x,elpunto.y,elrectangulo.rid)=1 THEN
  95.                                     dbms_output.put(elrectangulo.rid||'   ');
  96.                             END IF;
  97.                     END LOOP;
  98.         END IF;
  99.         contiene:=0;
  100.         dbms_output.put_line('');
  101.         END LOOP;
  102. END;
  103. /
  104. -----------------------------------
  105. ---------------Cada Rectangulo------------
  106. DECLARE
  107.     CURSOR puntoi IS SELECT * FROM puntos;
  108.     CURSOR rectanguloi IS SELECT * FROM rectangulo;
  109.     elrectangulo rectangulo%ROWTYPE;
  110.     elpunto puntos%ROWTYPE;
  111.     contiene number;
  112. BEGIN
  113.     contiene:=0;
  114.         dbms_output.put_line('RID RECTANGULO'||'         '||'CANTIDAD DE PUNTOS');
  115.         FOR elrectangulo IN rectanguloi LOOP
  116.         FOR elpunto IN puntoi LOOP
  117.             IF rectangleTools.puntoenRectangulo(elpunto.x,elpunto.y,elrectangulo.rid)=1 THEN
  118.                                 contiene:=contiene+1;
  119.                         END IF;
  120.                 END LOOP;
  121.                 --Ya se si el punto esta contenido en alguno o no
  122.                 IF contiene>0 THEN
  123.                 dbms_output.put(elrectangulo.rid||'         '||contiene);
  124.         END IF;
  125.         contiene:=0;
  126.         dbms_output.put_line('');
  127.         END LOOP;
  128. END;
  129. /
  130. --------------------------------------------
  131. -------------Crear Tabla-----------------
  132. begin
  133. create table casados(
  134. idM number not null,
  135. idH number not null,
  136. fechaCas date,
  137. fechaSep date default null),
  138. foreigh key (idM) references amigos(id),
  139. foreigh key (idH) references amigos(id);
  140. end;
  141. -----------------------------------------
  142. -------------------edad-----------------
  143. CREATE OR REPLACE FUNCTION edad(id_amigo number)
  144.     RETURN NUMBER AS
  145.     fnac_amigo DATE;
  146.     now DATE;
  147. BEGIN
  148.     SELECT SYSDATE INTO now FROM DUAL;
  149.     SELECT FNAC INTO fnac_amigo FROM amigos WHERE id_amigo=id;
  150.     RETURN (now-fnac_amigo)/365;
  151. END;
  152. /
  153. -----------------------------------------
  154. -------------------edadesSexo.pl----------
  155. DECLARE
  156. -- Un ejemplo de cursor explicito
  157.   CURSOR  amg IS
  158.   SELECT * FROM amigos;
  159.   elamigo amigos%ROWTYPE;
  160.   mm20 INTEGER; m2030 INTEGER; m3040 INTEGER; mm40 INTEGER;
  161.   hm20 INTEGER; h2030 INTEGER; h3040 INTEGER; hm40 INTEGER;
  162.   edad  INTEGER;
  163.   FechaSistema DATE;
  164.  BEGIN
  165.   mm20:=0; m2030:=0; m3040:=0;mm40:=0;
  166.   hm20:=0; h2030:=0; h3040:=0;hm40:=0;
  167. -- Fecha del sistema
  168.  SELECT SYSDATE INTO FechaSistema FROM DUAL;
  169.  FOR elamigo in amg LOOP
  170. -- se calcula la edad (en años) de cada amigo
  171.    edad := (FechaSistema - elamigo.fnac) / 365;
  172. -- Mujeres
  173.    IF (elamigo.sexo='F') THEN
  174.     IF edad < 20 THEN mm20 := mm20+1;
  175.       ELSIF edad >= 20 and edad <=30  THEN m2030 := m2030+1;
  176.       ELSIF edad >= 30 and edad <=40  THEN m3040 := m3040+1;
  177.       ELSE mm40 := mm40 +1;
  178.     END IF;
  179. -- Hombres
  180.    ELSE
  181.     IF edad < 20 THEN hm20 := hm20+1;
  182.       ELSIF edad >= 20 and edad <=30  THEN h2030 := h2030+1;
  183.       ELSIF edad >= 30 and edad <=40  THEN h3040 := h3040+1;
  184.       ELSE hm40 := hm40 +1;
  185.     END IF;
  186.   END IF;
  187.  END LOOP;
  188.  -- impresión de la tabla
  189.    dbms_output.put_line( '-----------------Rango de edades ----------'  );
  190.    dbms_output.put_line( '   < 20    [20,30]   [30,40]   >40      Total '   );
  191.    dbms_output.put_line( '--------------------------------------------'  );
  192.    dbms_output.put_line( 'Mj ' || mm20 || '       ' || m2030 || '       ' || m3040 || '      ' || '     ' ||  mm40|| '    ' ||  (mm20+m2030+m3040+mm40));
  193.    dbms_output.put_line( 'Hm ' || hm20 || '       ' || h2030 || '       ' || h3040 || '      ' || '     ' ||  hm40 || '    ' || (hm20+h2030+h3040+hm40));
  194.    dbms_output.put_line( '---------------------------------------------'  );
  195.    dbms_output.put_line( 'Tt ' || (mm20+hm20) || '       ' || (h2030+m2030) || '       ' || (m3040+h3040) || '      ' || '     ' || (mm40+ hm40) || '    ' || (mm20+hm20+m2030+h2030+m3040+h3040+mm40+hm40));
  196.    dbms_output.put_line( '---------------------------------------------'  );
  197. END;
  198. -----------------------------------------------------
  199. ------------------isVigente-------------------
  200. CREATE OR REPLACE FUNCTION isVigente(idM number, idH number)
  201.     RETURN BOOLEAN AS
  202.     vigente BOOLEAN;
  203.     elcasado casados%ROWTYPE;
  204. BEGIN
  205.     elcasado:=SELECT fechaSep from casados WHERE idM=casadoss.idM and idH=casados.idH;
  206.     IF (fechaSep is null) THEN
  207.         vigente:=true;
  208.     ELSE
  209.         vigente:=false;
  210.     END IF;
  211. END;   
  212. /
  213. --------------------------------------------------
  214. ------------------------function area rect----------
  215. CREATE OR REPLACE FUNCTION  area_rectangulo(xl NUMBER, yl NUMBER, xh NUMBER, yh NUMBER)
  216.     RETURN NUMBER AS
  217.     area NUMBER;
  218. BEGIN
  219.     area:= (xh-xl)*(yh-yl);
  220.     RETURN area;
  221. END;
  222. -------------------------------------------------
  223. --------------------getRows2---------------------
  224. import java.sql.*;
  225. class getRows2{
  226.     public static void main(String args []) throws SQLException{
  227.         DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
  228.         Connection conn=DriverManager.getConnection
  229.          ("jdbc:oracle:thin:@oracle.localdomain:1521:orcl","mquezada","hack3015");
  230.         Statement stmt=conn.createStatement();
  231.         ResultSet rs= stmt.executeQuery("SELECT sexo , COUNT(*) as cont FROM AMIGOS GROUP BY SEXO");
  232.         while(rs.next()){
  233.             String sexo=rs.getString("sexo");
  234.             if(sexo.equals(args[0])){
  235.                
  236.                 int contador=rs.getInt("cont");
  237.                 System.out.println(sexo+" "+contador); 
  238.             }
  239.            
  240.         }
  241.         stmt.close();
  242.     }
  243. }
  244. -------------------------------------------------
  245. ---------------Insert---------------------------
  246. import java.sql.*;
  247. class insert{
  248.     public static void main(String Args[]) throws SQLException{
  249.         DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
  250.         Connection conn= DriverManager.getConnection
  251.          ("jdbc:oracle:thin:@oracle.localdomain:1521:orcl", "mquezada", "hack3015");
  252.         Statement stmt=conn.createStatement();
  253.         stmt.executeUpdate("INSERT INTO AMIGOS VALUES(32, 'Lorena', 56488829, date '1970-08-1', 'F',780,540)");
  254.         stmt.close();
  255.     }
  256. }//
  257. ------------------------------------------------
  258. -------------------Insert2-----------------------
  259. import java.sql.*;
  260. class insert2{
  261.     public static void main(String args[]) throws SQLException{
  262.         DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
  263.         Connection conn= DriverManager.getConnection
  264.          ("jdbc:oracle:thin:@oracle.localdomain:1521:orcl", "mquezada", "hack3015");
  265.         Statement stmt=conn.createStatement();
  266.         stmt.executeUpdate("INSERT INTO AMIGOS VALUES('"+args[0]+"','"+args[1]+"',"+args[2]+", date '"+args[3]+"','"+args[4]+"',null,null)");
  267.         stmt.close();
  268.     }
  269. }//
  270. -----------------------------------------------
  271. --------------------InsertPs---------------------
  272. import java.sql.*;
  273. class insertPs{
  274.     public static void main(String args[]) throws SQLException{
  275.         DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
  276.         Connection conn= DriverManager.getConnection
  277.          ("jdbc:oracle:thin:@oracle.localdomain:1521:orcl", "mquezada", "hack3015");
  278.         PreparedStatement ps=conn.prepareStatement("insert into amigos values (?,?,?,?,?,null,null)");
  279.         int id= new Integer(args[0]).intValue();
  280.         String nombre= args[1];
  281.         int cel = new Integer(args[2]).intValue();
  282.         Date fnac=Date.valueOf(args[3]);
  283.         String sexo=args[4];
  284.        
  285.         ps.setInt(1,id);
  286.         ps.setString(2,nombre);
  287.         ps.setInt(3,cel);
  288.         ps.setDate(4,fnac);
  289.         ps.setString(5,sexo);
  290.         ps.executeUpdate();
  291.         ps.close();
  292.     }
  293. }//
  294. ---------------------------------------------
  295. -------------------InsertPs2--------------------
  296. import java.sql.*;
  297. import java.util.Scanner;
  298. class insertPs2{
  299.     public static void main(String args[]) throws SQLException{
  300.         DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
  301.         Connection conn= DriverManager.getConnection
  302.          ("jdbc:oracle:thin:@oracle.localdomain:1521:orcl", "mquezada", "hack3015");
  303.         PreparedStatement ps=conn.prepareStatement("insert into amigos values (?,?,?,?,?,null,null)");
  304.         Scanner sc=new Scanner (System.in);
  305.         for(;;){
  306.            
  307.             System.out.println("--------Datos del Amigo--------");
  308.             System.out.print("ID (-1 --> Termina) : ");
  309.             int id= sc.nextInt();
  310.             System.out.println();
  311.             if(id==-1){
  312.                 System.out.println("Terminado ...");
  313.                 ps.close();
  314.                 System.exit(0);
  315.             }
  316.             System.out.print("Nombre : ");
  317.             String nombre= sc.next();
  318.             System.out.println();
  319.             System.out.print("Celular : ");
  320.             int cel = sc.nextInt();
  321.             System.out.println();
  322.             System.out.print("Fecha Nacimiento (aaaa-mm-dd) : ");
  323.             Date fnac=Date.valueOf(sc.next());
  324.             System.out.println();
  325.             //Date miDate = new SimpleDateFormat("dd/MM/yyyy").parse(scanner.nextLine());
  326.             System.out.print("Sexo (M/F) : ");
  327.             String sexo=sc.next();
  328.            
  329.             ps.setInt(1,id);
  330.             ps.setString(2,nombre);
  331.             ps.setInt(3,cel);
  332.             ps.setDate(4,fnac);
  333.             ps.setString(5,sexo);
  334.             ps.executeUpdate();
  335.             System.out.println("Insertado...");
  336.         }
  337.        
  338.     }  
  339. }//
  340. -------------------------------------------------
  341. ------------------isCasado------------------------
  342. create or replace function isCasado (id_amigo number)
  343.     RETURN BOOLEAN
  344. IS
  345.     casado matrimonios%ROWTYPE;
  346. BEGIN
  347.     SELECT * INTO casado FROM matrimonios where id_amigo= idh or id_amigo=idm;
  348.     if casado.idh is null Then
  349.         return false;
  350.     END IF;
  351.     Return true;
  352. END;
  353. /
  354. -------------------------------------------------
  355. ---------------------LAB-----------------------
  356.  
  357. import java.sql.*;
  358. import java.util.*;
  359.  class LAB {
  360.  public static void main (String args []) throws SQLException
  361.   {
  362.     Scanner sc= new Scanner(System.in);
  363.     if(args.length!=7){
  364.         System.err.println("Usage: java insertAmigo ID Nombre Cel Fnac(aaaa-mm-dd) Sexo(M/F) IDMADRE IDMADRE");
  365.         System.exit(-1);
  366.     }
  367.         int id;
  368.     String nombre;
  369.     int cel;
  370.     Date fechaNacimiento;
  371.     String sexo;
  372.     int idMadre;
  373.     int idPadre;   
  374.     DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
  375.     Connection conn = DriverManager.getConnection
  376.       ("jdbc:oracle:thin:@oracle.localdomain:1521:orcl", "mquezada", "hack3015");
  377.     Statement stmt = conn.createStatement();
  378.     PreparedStatement ps = conn.prepareStatement("insert into amigos values (?,?,?,?,?,?,?)");
  379.     id=new Integer(args[0]).intValue();
  380.     nombre=args[1];
  381.     cel=new Integer(args[2]).intValue();
  382.     fechaNacimiento=Date.valueOf(args[3]);
  383.     sexo=args[4];
  384.     idMadre=new Integer (args[5]).intValue();
  385.     idPadre=new Integer (args[6]).intValue();
  386.     ps.setInt(1,id);
  387.     ps.setString(2,nombre);
  388.     ps.setInt(3,cel);
  389.     ps.setDate(4,fechaNacimiento);
  390.     ps.setString(5,sexo);
  391.     ps.setInt(6,idMadre);
  392.     ps.setInt(7,idPadre);
  393.     ps.executeUpdate();
  394.     ps.close();
  395.   }
  396.  
  397.  }
  398. -------------------------------------------------------
  399. -----------------------LAB01---------------------------
  400. CREATE OR REPLACE TABLE rectangulo (
  401.   rid NUMBER PRIMARY KEY ,
  402.   xl NUMBER,
  403.   yl NUMBER,
  404.   XH NUMBER,
  405.   YH NUMBER
  406. );
  407.  
  408. INSERT INTO rectangulo VALUES(1,0,0,2,2);
  409. INSERT INTO rectangulo VALUES(2,1,5,4,9);
  410. INSERT INTO rectangulo VALUES(3,5,6,7,7);
  411. INSERT INTO rectangulo VALUES(4,4,4,8,8);
  412.  
  413. -- Ejercicio 1
  414. CREATE OR REPLACE FUNCTION funcion1lab1(id NUMBER)
  415.   RETURN NUMBER AS
  416.   rec rectangulo%ROWTYPE;
  417.   area NUMBER;
  418. BEGIN
  419.   SELECT * INTO rec FROM rectangulo WHERE rid = id;
  420.   area := (rec.xh - rec.xl) * (rec.yh - rec.yl);
  421.   RETURN area;
  422. END;
  423.  
  424.   SELECT funcion1lab1(2) FROM DUAL;
  425.  
  426. --Ejercicio 2
  427. SELECT * FROM rectangulo WHERE funcion1lab1(RID)>4;
  428.  
  429. -- Ejercicio 3
  430. CREATE OR REPLACE FUNCTION funcion2lab1(id NUMBER)
  431.   RETURN NUMBER AS;
  432.   rec rectangulo%ROWTYPE;
  433.   perimetro NUMBER;
  434. BEGIN
  435.   SELECT * INTO rec FROM rectangulo WHERE rid = id;
  436.   perimetro := ((rec.xh - rec.xl) + (rec.yh - rec.yl)) * 2;
  437.   RETURN perimetro;
  438. END;
  439.  
  440. -- Ejercicio 4
  441. CREATE OR REPLACE FUNCTION funcion3lab1(x1 NUMBER, y1 NUMBER, x2 NUMBER, y2 NUMBER, a NUMBER, b NUMBER)
  442.   RETURN NUMBER AS
  443. BEGIN
  444.   IF(a<x1 OR a>x2 OR b<y1 OR b>y2) THEN
  445.     RETURN 0;
  446.   ELSE
  447.     RETURN 1;
  448.   END IF;
  449. END;
  450.  
  451. -- Ejercicio 5
  452. CREATE OR REPLACE FUNCTION funcion4lab1(x1 NUMBER, y1 NUMBER, X2 NUMBER, y2 NUMBER, w1 NUMBER, z1 NUMBER, w2 NUMBER, z2 NUMBER)
  453.   RETURN NUMBER AS
  454. BEGIN
  455.   IF((w1 >= x1 AND w2 <= x2) AND (z1 >= y1 AND z2 <= y2)) THEN
  456.     RETURN 1;
  457.   ELSE
  458.     RETURN 0;
  459.   END IF;
  460. END;
  461.  
  462. --Ejercicio 6
  463. CREATE OR REPLACE PROCEDURE procedimiento1lab1 IS
  464.   CURSOR c_rec IS SELECT * FROM rectangulo;
  465.   rec3 rectangulo%ROWTYPE;
  466. BEGIN
  467.   FOR rec3 IN c_rec LOOP
  468.     IF (funcion1lab1(rec3.xl,rec3.yl,rec3.hx,rec3.yh) > 3 AND funcion3lab1(rec3.xl,rec3.yl,rec3.hx,rec3.yh,2,6) = 1) THEN
  469.       DBMS_OUTPUT.PUT_LINE('RID ' || ' ' || 'XL' || ' ' || 'YL' || ' ' || 'XH' || ' ' || 'YH');
  470.       DBMS_OUTPUT.PUT_LINE(rec3.rid || ' ' || rec3.xl || ' ' || rec3.yl || ' ' || rec3.xh || ' ' || rec3.yh);
  471.     END IF;
  472.   END LOOP;
  473. END;
  474. ------------------------------------------------------
  475. ---------------------lab2.pl-----------------------------
  476. Declare
  477. Cursor hot1 is Select * from hoteles;
  478. Cursor hot2 is Select * from hoteles;
  479. hoteli  hoteles%ROWTYPE;
  480. hotelj hoteles%ROWTYPE;
  481. skyline boolean;
  482. Begin
  483. dbms_output.put_line('-----------------------Hoteles Skyline----------------------');
  484. dbms_output.put_line('Nombre');    
  485.      skyline:=true;
  486.       For hoteli in hot1 LOOP
  487.     For hotelj in hot2 LOOP
  488.         If hoteli.id<>hotelj.id Then
  489.             If hoteli.distancia_playa>=hotelj.distancia_playa and  hoteli.precio>=hotelj.precio Then
  490.            skyline:=false;
  491.             End If;
  492.         End IF;
  493.     End LOOP;
  494.     If skyline then
  495.         dbms_output.put_line(hoteli.nombre);
  496.     End If;
  497.     skyline:=true;
  498.       End LOOP;
  499. END;
  500. ---------------------------------------------------
  501. ---------------------lab3.trigger-------------------
  502. CREATE OR REPLACE TRIGGER separar
  503.     AFTER UPDATE OF fechaSep  ON matrimonios
  504.     FOR EACH ROW
  505. DECLARE
  506.     duracion number;
  507. BEGIN
  508.     IF :NEW.fechaSep is not null THEN  
  509.         duracion:=(:NEW.fechaSep-:OLD.fechaCas)/365;
  510.         INSERT INTO separacion values(:OLD.idH,:OLD.idM,duracion);
  511.     END IF;
  512. END;
  513. /
  514. --------------------------------------------------
  515. --------------------------lab3.trigger2----------
  516. CREATE OR REPLACE TRIGGER noPrimos
  517.     BEFORE INSERT ON matrimonios
  518.     FOR EACH ROW
  519. DECLARE
  520.     primos boolean;
  521.     idPadreH amigos.idPadre%TYPE;
  522.     idMadreH amigos.idMadre%TYPE;
  523.     idAbuelaH amigos.idMadre%TYPE;
  524.     idAbueloH amigos.idPadre%TYPE;
  525.     idPadreM amigos.idPadre%TYPE;
  526.     idMadreM amigos.idMadre%TYPE;
  527.     idAbuelaM amigos.idMadre%TYPE;
  528.     idAbueloM amigos.idPadre%TYPE;
  529. BEGIN
  530.     primos:=false;
  531.     select amigos.idPadre into idPadreH from amigos where :NEW.idH=id;
  532.     select amigos.idMadre into idMadreH from amigos where :NEW.idH=id;
  533.     select amigos.idPadre into idPadreM from amigos where :NEW.idM=id;
  534.     select amigos.idMadre into idMadreM from amigos where :NEW.idM=id;
  535.     select amigos.idPadre into idAbueloH from amigos where idPadreH=id;
  536.     select amigos.idMadre into idAbuelaH from amigos where idMadreH=id;
  537.     select amigos.idPadre into idAbueloM from amigos where idPadreM=id;
  538.     select amigos.idMadre into idAbuelaM from amigos where idMadreM=id;
  539.     IF idAbuelaH=idAbuelaM or idAbueloH=idAbueloM THEN
  540.         raise_application_error(-20000,'<'||:NEW.idH||' y '||:NEW.idM||' son primos >');
  541.     END IF;
  542. END;
  543. /
  544. ----------------------------------------------------
  545. ----------------------masJoven---------------------
  546. CREATE OR REPLACE PROCEDURE masJoven
  547. IS
  548.     CURSOR amigoi IS SELECT * FROM amigos;
  549.     elamigo amigos%ROWTYPE;
  550.     elMasJoven amigos.nombre%TYPE;
  551.     mini number;
  552.    
  553. BEGIN
  554.     elMasJoven:='';
  555.     mini:=999999;
  556.     FOR elamigo IN amigoi LOOP
  557.         IF(edad(elamigo.id)<=mini) THEN
  558.             mini:=edad(elamigo.id);
  559.             elMasJoven:= elamigo.nombre;
  560.         END IF;
  561.     END LOOP;
  562.     dbms_output.put_line('El amigo mas joven es '||elMasJoven);
  563. END masJoven;
  564. /
  565. -------------------------------------------------
  566. ----------------------pretest1--------------------
  567. Declare
  568.     Cursor casadoi is select * from casados;
  569.     elcasado casados%ROWTYPE;
  570.     contCas number;
  571.     contSep number;
  572. Begin
  573.     contCas:=0;
  574.     contSep:=0;
  575.     FOR elcasado IN casadoi LOOP
  576.         IF (elcasado.fechaSep is null) THEN
  577.             contCas:=contCas+1;
  578.         ELSE
  579.             contSep:=contSep+1;
  580.         END IF;
  581.     END LOOP;
  582.     dbms_output.put_line('La cantidad de matrimonios terminados es: '|| contSep  );
  583.     dbms_output.put_line('La cantidad de matrimonios vigentes es : '||contCas);
  584. END;
  585. --------------------------------------------------
  586. -------------------------pretest2-----------------
  587. DECLARE
  588.     CURSOR casadoi is select * from casados;
  589.     elcasado casados%ROWTYPE;
  590.     duracion number;
  591.     mujer amigos%ROWTYPE;
  592.     hombre amigos%ROWTYPE;
  593.     now date;
  594. BEGIN
  595.     dbms_output.put_line('Matrimonio'||'    '||'Duración');
  596.     FOR elcasado IN casadoi LOOP
  597.         IF elcasado.fechaSep is null THEN
  598.             SELECT SYSDATE INTO now FROM DUAL;
  599.             duracion:= (now-elcasado.fechaCas)/365;
  600.         ELSE
  601.             duracion:= (elcasado.fechaSep-elcasado.fechaCas)/365;
  602.         END IF;
  603.         select trunc(duracion) into duracion from dual;
  604.         select * into hombre from amigos where id=elcasado.idH;
  605.         select * into mujer  from amigos where id=elcasado.idM;
  606.         dbms_output.put_line(hombre.nombre||' y '|| mujer.nombre||' '|| duracion); 
  607.     END LOOP;
  608. END;
  609. ---------------------------------------------------
  610. ------------------------pretest3-------------------
  611. Declare
  612.     CURSOR amigoi IS SELECT * FROM amigos;
  613.     CURSOR casadoi IS SELECT * FROM casados;
  614.     elamigo amigos%ROWTYPE;
  615.     elcasado casados%ROWTYPE;
  616.     cont number;
  617.     contFinal number;
  618.     nombre amigos.nombre%TYPE;
  619.     nombreFinal amigos.nombre%TYPE;
  620. BEGIN
  621.     cont:=0;
  622.     contFinal:=0;
  623.     FOR elamigo IN amigoi LOOP
  624.         FOR elcasado IN casadoi LOOP
  625.             IF (elamigo.id=elcasado.idH or elamigo.id=elcasado.idM) THEN
  626.                 cont:= cont+1;
  627.                 nombre:=elamigo.nombre;
  628.             END IF;
  629.         END LOOP;
  630.         IF (contFinal<cont) THEN   
  631.             contFinal:=cont;
  632.             nombreFinal:=elamigo.nombre;
  633.         END IF;
  634.         cont:=0;
  635.     END LOOP;
  636.     dbms_output.put_line('El que se ha casado mas veces es '|| nombreFinal || ', con '||contFinal||' veces.');
  637. END;
  638. ------------------------------------------------
  639. --------------------puntoPkg---------------------
  640. CREATE OR REPLACE PACKAGE PointTools IS
  641.  CURSOR elPunto(elPid puntos.pid%TYPE) IS SELECT * FROM puntos WHERE pid=elPid;
  642.  distancia number;
  643.  --verifica si son iguales
  644.  FUNCTION iguales(x number, y number, pid puntos.pid%TYPE)
  645.  RETURN BOOLEAN;
  646.  --calcula distancia
  647.  FUNCTION distancia (x number, y number, pid puntos.pid%TYPE)
  648.  RETUNR NUMBER;
  649.  --verifica si esta en circulo
  650.  
  651. --cuerpo de las funciones
  652. CREATE OR REPLACE PACKAGE BODY PointTools IS
  653.  --igualdad
  654.  FUNCTION iguales (x number, y number, pid puntos.pid%TYPE)
  655.   RETURN NUMBER IS
  656.   puntoi puntos&ROWTYPE;
  657.  BEGIN
  658.   OPEN elPunto(pid)
  659.   FETCH elPunto into puntoi;
  660.   IF (x=puntoi.x and y=puntoi.y)THEN
  661.    RETURN TRUE;
  662.   END IF;
  663.   RETURN FALSE;
  664.   CLOSE elPunto;
  665.  END iguales;
  666.  
  667.  --distancia
  668.  FUNCTION distancia (x number, y number, pid puntos.pid%TYPE)
  669.   RETUNR NUMBER IS
  670.   puntoi puntos%ROWTYPE;
  671.  BEGIN
  672.   OPEN elPunto(pid)
  673.   FETCH elPunto INTO puntoi;
  674.   distancia:=(((x-puntoi.x)**2)+((y-puntoi.y)**2))**(1/2);
  675.   CLOSE elPunto;
  676.   RETURN distancia;
  677.  END distancia;
  678. ---------------------------------------------------
  679. ----------------recContiene67----------------------
  680. DECLARE
  681.     CURSOR rectanguloi IS SELECT * FROM rectangulo;
  682.     elrectangulo rectangulo%ROWTYPE;
  683. BEGIN
  684.     dbms_output.put_line('LOS SIGUIENTES RECTANGULOS CONTIENEN EL (6,7)');
  685.     FOR elrectangulo IN rectanguloi LOOP
  686.         IF rectangleTools.puntoenRectangulo(6,7,elrectangulo.rid)=1 THEN
  687.             dbms_output.put_line(elrectangulo.rid);
  688.         END IF;
  689.     END LOOP;
  690. END;
  691. /
  692. --------------------------------------------------
  693. ----------------RectanguloPkg-----------------------
  694. ----Definicion del paquete-----------------
  695. -------------------------------------------
  696. CREATE OR REPLACE PACKAGE RectangleTools IS
  697.  dx NUMBER;
  698.  dy NUMBER;
  699.  CURSOR elRec(elId  rectangulo.rid%type) IS SELECT * FROM RECTANGULO WHERE rID=elId;
  700.  --calcula el area
  701.  FUNCTION area(elrid INTEGER)
  702.  RETURN NUMBER;
  703.  --calcula el perimetro
  704.  FUNCTION perimetro(elrid INTEGER)
  705.  RETURN NUMBER;
  706.  --verifica si un punto esta dentro de un rectangulo.
  707.  FUNCTION puntoenRectangulo(x NUMBER, y NUMBER, elRid INTEGER)
  708.  RETURN INTEGER;
  709. END RectangleTools;
  710. /
  711. ------ Cuerpo de las funciones-------------------
  712. ------------------------------------------------
  713. CREATE OR REPLACE PACKAGE BODY RectangleTools IS
  714. ---el area
  715.  FUNCTION area(elRid integer)
  716.  RETURN NUMBER IS
  717.  rec rectangulo%ROWTYPE;
  718. BEGIN
  719.  OPEN elRec(elRid);
  720.  FETCH elRec into rec;
  721.  dx := rec.XH - rec.XL;
  722.  dy := rec.YH - rec.YL;
  723.  CLOSE elRec;
  724.  RETURN (dx * dy);
  725. END area;
  726.  
  727. --- el perimetro
  728.  FUNCTION perimetro(elRid integer)
  729.   RETURN NUMBER IS
  730.  rec rectangulo%ROWTYPE;
  731. BEGIN
  732.  OPEN elRec(elRid);
  733.  FETCH elRec into rec;
  734.  dx := rec.XH - rec.XL;
  735.  dy := rec.YH - rec.YL;
  736.  CLOSE elRec;
  737.  RETURN (2 * (dx +  dy));
  738. END perimetro;
  739.  
  740. --Punto dentro de un rectangulo
  741. FUNCTION puntoenRectangulo(x NUMBER, y NUMBER, elRid INTEGER)
  742. RETURN INTEGER IS
  743.  rec rectangulo%ROWTYPE;
  744.  rt INTEGER;
  745. BEGIN
  746.  OPEN elRec(elRid);
  747.  FETCH elRec into rec;
  748.  rt := 0;
  749.  IF (x>=rec.xl and x <= rec.xh and y >= rec.yl and y <= rec.yh) THEN
  750.      rt:= 1;
  751.  END IF;
  752.  CLOSE elRec;
  753.  RETURN rt;
  754. END puntoenRectangulo;
  755. END RectangleTools;
  756. /
  757. ---------------------------------------------------
  758. ------------------skyline_ejemplo------------------
  759. DECLARE
  760.         CURSOR losHoteles IS select * from hoteles;
  761.         hotel hoteles%ROWTYPE;
  762.         menorPrecio hoteles%ROWTYPE;
  763.         menorDistancia hoteles%ROWTYPE;
  764. BEGIN
  765.         OPEN losHoteles;
  766.         FETCH losHoteles into menorPrecio;
  767.         menorDistancia := menorPrecio;
  768.         CLOSE losHoteles;
  769.         FOR hotel in losHoteles LOOP
  770. --REVISO SI ES EL QUE POSEE MENOR PRECIO
  771.                 IF hotel.id = menorPrecio.id THEN menorPrecio := hotel;
  772.                 ELSIF hotel.precio < menorPrecio.precio THEN menorPrecio := hotel;
  773.                 ELSE menorPrecio := menorPrecio;
  774.                 END IF;
  775. --REVISO SI ES EL QUE POSEE MENOR DISTANCIA
  776.                 IF hotel.id = menorDistancia.id THEN menorDistancia := hotel;
  777.                 ELSIF hotel.distancia_playa < menorDistancia.distancia_playa THEN menorDistancia := hotel;
  778.                 ELSE menorDistancia := menorDistancia;
  779.                 END IF;
  780.         END LOOP;
  781.     DELETE from hotelSkyline;
  782.     commit;
  783.     IF(menorDistancia.id=menorPrecio.id) THEN INSERT INTO hotelSkyline values (menorDistancia.id,menorDistancia.nombre,menorDistancia.precio,menorDistancia.distancia_playa);
  784.         ELSE dbms_output.put_line('no existe un hotel SKYLINE');
  785.         END IF;
  786.         FOR hotel in losHoteles LOOP
  787.                 IF(menorDistancia.id <> hotel.id) THEN
  788.             IF(menorDistancia.precio = hotel.precio AND menorDistancia.distancia_playa = hotel.distancia_playa) THEN INSERT INTO hotelSkyline values(hotel.id,hotel.nombre,hotel.precio,hotel.distancia_playa);
  789.             END IF;
  790.         END IF;
  791.     END LOOP;
  792. END;
  793. ------------------------------------------------
  794. ------------------test1_1-----------------------
  795. DECLARE
  796.     CURSOR amigoi IS SELECT id,nombre FROM amigos WHERE sexo='M';
  797.     CURSOR casadoi IS SELECT idH FROM casados;
  798.     elamigo amigos%ROWTYPE;
  799.     elcasado casados%ROWTYPE;
  800.     soltero amigos%ROWTYPE;
  801.     cont number;
  802. BEGIN
  803.     cont:=0;
  804.     dbms_output.put_line('--Hombres solterisimos--');
  805.     dbms_output.put_line('ID'||'    '||'NOMBRE');
  806.     cont:=0;
  807.     FOR elamigo IN amigoi LOOP
  808.         FOR elcasado IN casadoi LOOP
  809.             IF (elamigo.id=elcasado.idH) THEN
  810.                 cont:=cont+1;
  811.             END IF;
  812.         END LOOP;
  813.         IF cont=0 THEN
  814.             dbms_output.put_line(elamigo.id||'  '||elamigo.nombre);
  815.         END IF;
  816.         cont:=0;
  817.     END LOOP;
  818. END;
  819. ----------------------------------------------------
  820. ---------------------------test1_2-------------------
  821. DECLARE
  822.     CURSOR casadoi is select * from casados;
  823.     elcasado casados%ROWTYPE;
  824.     duracion number;
  825.     maximo number;
  826.     vigente BOOLEAN;
  827.     mujer amigos%ROWTYPE;
  828.     hombre amigos%ROWTYPE;
  829.     now date;
  830. BEGIN
  831.     duracion:=0;
  832.     maximo:=0;
  833.     dbms_output.put_line('El matrimonio que mas ha durado es :');
  834.     FOR elcasado IN casadoi LOOP
  835.         IF elcasado.fechaSep is null THEN
  836.             SELECT SYSDATE INTO now FROM DUAL;
  837.             duracion:= (now-elcasado.fechaCas)/365;
  838.             vigente:=true;
  839.         ELSE
  840.             duracion:= (elcasado.fechaSep-elcasado.fechaCas)/365;
  841.             vigente:=false;
  842.         END IF;
  843.         select trunc(duracion) into duracion from dual;
  844.         IF maximo < duracion THEN
  845.             maximo:=duracion;
  846.             select * into hombre from amigos where id=elcasado.idH;
  847.             select * into mujer  from amigos where id=elcasado.idM;
  848.         END IF;
  849.     END LOOP;
  850.     IF vigente=true THEN
  851.         dbms_output.put_line(hombre.nombre||' y '||mujer.nombre||', '||maximo||' anios.'||' Vigente.');
  852.     ELSE
  853.         dbms_output.put_line(hombre.nombre||' y '||mujer.nombre||', '||maximo||' anios.'||' Separados.');
  854.     END IF;
  855. END;
  856. -------------------------------------------------
  857. ----------------------test2_1--------------------
  858. CREATE OR REPLACE FUNCTION edadMenor
  859.         RETURN NUMBER
  860. IS
  861.         CURSOR elamigo IS SELECT * FROM amigos;
  862.         amigoi amigos%ROWTYPE;
  863.         minimo NUMBER;
  864.         fechaDada DATE;
  865.         aux number;
  866.         idAux number;
  867.  
  868. BEGIN
  869.         minimo:=99999999;
  870.         fechaDada:=date '1999-12-31';
  871.         FOR  amigoi in elamigo LOOP
  872.                 aux:=(fechaDada-amigoi.fnac)/365;
  873.                 if (aux<0) then
  874.                     aux:=aux*-1;
  875.                 END IF;
  876.                 if(aux<minimo) THEN
  877.                     minimo:=aux;
  878.                     idAux:=amigoi.id;
  879.                 END IF;
  880.         END LOOP;
  881.         Return idAux;
  882.  
  883. END;
  884. /
  885. ---------------------------------------------------
  886. -------------------------------test2_2------------
  887. CREATE OR REPLACE PROCEDURE test2_2 as
  888.     CURSOR elamigo IS SELECT * from amigos;
  889.     amigoi amigos%ROWTYPE;
  890.     CURSOR elcasado IS SELECT * from matrimonios;
  891.     casadoi matrimonios%ROWTYPE;
  892.     nombreMama varchar(30);
  893.     nombrePapa varchar(30);
  894.     aux number;
  895.     aux2 number;
  896.     aux3 number;
  897.     idP number;
  898.     idM number;
  899. BEGIN
  900.     aux2:=-5;
  901.     aux:=-5;
  902.     FOR amigoi in elamigo LOOP
  903.         if(amigoi.idPadre is null and amigoi.idMadre is null) THEN
  904.             aux3:=-1;
  905.         ELSE
  906.             FOR casadoi in elcasado LOOP
  907.                 if amigoi.idPadre=casadoi.idH then aux:=casadoi.idH; end if;
  908.                 if amigoi.idMadre=casadoi.idM then aux2:=casadoi.idM; end if;
  909.                
  910.  
  911.             END LOOP;  
  912.             if(aux<>-5 and aux2<>-5) then
  913.  
  914.                 SELECT nombre into nombrePapa from amigos where id=aux;
  915.                 SELECT nombre into nombreMama from amigos where id=aux2;
  916.                 dbms_output.put_line(amigoi.nombre ||' '||amigoi.cel||' '||amigoi.fnac||' '||amigoi.sexo||' '||nombrePapa||' '|| nombreMama);
  917.             END IF;
  918.         END IF;
  919.         aux:=-5;
  920.         aux2:=-5;
  921.     END LOOP;
  922.     if aux=-3 then dbms_output.put_line('No existen datos de los padres'); end if;
  923. END test2_2;
  924. /
  925. ----------------------------------------------
  926. -------------------test2_3--------------------
  927.   CREATE OR REPLACE TRIGGER "JUAN.ORTIZ1601"."INSERTARMAXIMODIEZ"
  928.     BEFORE INSERT ON CASADOS
  929.     FOR EACH ROW
  930. DECLARE
  931.     cant INT;
  932.     fecha DATE;
  933. BEGIN
  934.     SELECT count(*) INTO  cant FROM CASADOS where fechasep is null;
  935.     DBMS_OUTPUT.PUT_LINE(cant);
  936.     if(cant>=2) THEN
  937.         raise_application_error(-20001,' Se ha superado el maximo de matrimonios casados vigentes');
  938.     end if;
  939. END;
  940. /
  941. ALTER TRIGGER "JUAN.ORTIZ1601"."INSERTARMAXIMODIEZ" ENABLE;
  942. ----------------------------------------------
  943. -------test2_4---Llamar funcion JDBC---------
  944. package lab5;
  945. import java.sql.*;
  946. /**
  947.  *
  948.  * @author jc
  949.  */
  950. public class ejercicioCuatro {
  951.     public static void main(String[] args) throws SQLException{
  952.         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  953.  
  954.         Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@colvin.chillan.ubiobio.cl:1521:orcl","juan.ortiz1601","askjzxmnqwpo19");
  955.         Statement stmt = conn.createStatement();
  956.         CallableStatement cs = conn.prepareCall ("begin ? := fechaMasCercana(?); end;");
  957.         cs.registerOutParameter(1,Types.INTEGER);
  958.         cs.setInt(2, 5);
  959.         cs.executeUpdate();
  960.         int id = cs.getInt(1);
  961.         ResultSet rs = stmt.executeQuery("SELECT * FROM AMIGOS WHERE id = "+id);
  962.         rs.next();
  963.         System.out.println("ID: "+rs.getInt(1));
  964.         System.out.println("Nombre: "+rs.getString(2));
  965.         System.out.println("Celular: "+rs.getInt(3));
  966.         System.out.println("Nacimiento: "+rs.getString(4));
  967.         System.out.println("Sexo: "+rs.getString(5));
  968.         int mama = rs.getInt(6);
  969.         int papa = rs.getInt(7);
  970.         if(mama!=0){
  971.             rs = stmt.executeQuery("SELECT nombre FROM AMIGOS WHERE id = "+mama);
  972.             rs.next();
  973.             System.out.println("Madre: "+rs.getString("nombre"));
  974.         }
  975.         if(papa!=0){
  976.             rs = stmt.executeQuery("SELECT nombre FROM AMIGOS WHERE id = "+papa);
  977.             rs.next();
  978.             System.out.println("Padre: "+rs.getString("nombre"));
  979.         }
  980.         stmt.close();
  981.         cs.close();
  982.     }
  983. }
  984. --------------------------------------------------
  985. ----------------------trigger labx1-------------
  986. CREATE OR REPLACE TRIGGER menores
  987.     AFTER INSERT ON matrimonios
  988.     FOR EACH ROW
  989. DECLARE
  990.     edadH number;
  991.     fnacH amigos.fnac%TYPE;
  992.     fnacM amigos.fnac%TYPE;
  993.     edadM number;
  994. BEGIN
  995.     select fnac into fnacH from amigos where :NEW.idH=amigos.id;
  996.     select fnac into fnacM from amigos where :NEW.idM=amigos.id;
  997.     edadH:=(:NEW.fechaCas-fnacH)/365;
  998.     edadM:=(:NEW.fechaCas-fnacM)/365;
  999.     IF edadH<18  THEN
  1000.         INSERT INTO notificaciones values(:NEW.idH,:NEW.idM,'El novio es menor de edad');
  1001.     ELSIF edadM<16 THEN
  1002.         INSERT INTO notificaciones values (:NEW.idH,:NEW.idM,'La novia es menor de edad');
  1003.     END IF;
  1004. END;
  1005. /
  1006. ---------------------------------------------------
  1007. -----------------------trigger lab x2--------------
  1008. CREATE OR REPLACE TRIGGER menores
  1009.     BEFORE INSERT ON matrimonios
  1010.     FOR EACH ROW
  1011. DECLARE
  1012.     edadH number;
  1013.     edadM number;
  1014.     fnacH amigos.fnac%TYPE;
  1015.     fnacM amigos.fnac%TYPE;
  1016. BEGIN
  1017.     SELECT fnac INTO fnacH FROM amigos WHERE :NEW.idH=amigos.id;
  1018.     SELECT fnac INTO fnacM FROM amigos WHERE :NEW.idM=amigos.id;
  1019.     edadH:=(:NEW.fechaCas-fnacH)/365;
  1020.     edadM:=(:NEW.fechaCas-fnacM)/365;
  1021.     IF edadM<16 and edadH<18 THEN
  1022.         raise_application_error(-20000,'<'||'Ambos novios son menores de edad'||'>');
  1023.     ELSIF edadM<16 THEN
  1024.         raise_application_error(-20000,'<'||'La novia es menor de edad'||'>');
  1025.     ELSIF edadH<18 THEN
  1026.         raise_application_error(-20000,'<'||'El novio es menor de edad'||'>');
  1027.     END IF;
  1028. END;
  1029. -----------------------------------------------
  1030. ----------usa edad menor------------------
  1031. DECLARE
  1032.     id number;
  1033. Begin
  1034.     id:=edadMenor();
  1035.     dbms_output.put_line('El id del amigo con la fecha de nacimiento mas cercana a 1999-12-31 es '||id);
  1036. END;
  1037. /
  1038. -----------------------------------------------
  1039. ------------------------gentVtas--------------
  1040. import java.sql.*;
  1041. import java.util.*;
  1042. import java.io.*;
  1043. import java.util.Random;
  1044. public class GenVtas {
  1045.     public static void main(String[] args) throws SQLException {
  1046.         DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
  1047.         Connection conn = Con();
  1048.  
  1049.         PreparedStatement ps = conn.prepareStatement("INSERT INTO VENTAS VALUES(?,?,?,?,?)");
  1050.         long dia = 24 * 3600 * 1000; // milisegundos x día
  1051.         int ntuplas = 50;
  1052.         // Locales
  1053.         int l1 = 1;
  1054.         int l2 = 3;
  1055.         // Productos
  1056.         int p1 = 1;
  1057.         int p2 = 30;
  1058.         // Cantidades
  1059.         int q1 = 10;
  1060.         int q2 = 20;
  1061.         // Montos
  1062.         int m1 = 2000;
  1063.         int m2 = 50000;
  1064.         java.sql.Date f1 =  java.sql.Date.valueOf("2012-01-01");
  1065.         java.sql.Date f2 =  java.sql.Date.valueOf("2018-01-01");
  1066.         int df = (int) ((f2.getTime() - f1.getTime()) / dia);
  1067.         Random rand = new Random();
  1068.         for (int i = 0; i < ntuplas; i++) {
  1069.             java.sql.Date f =  new  java.sql.Date (f1.getTime()  + rand.nextInt(df) * dia);
  1070.             int idLocal  = l1 + rand.nextInt(l2 - l1 + 1) ;
  1071.             int idProducto = p1 + rand.nextInt(p2 - p1 + 1);
  1072.             int cantidad  = q1 + rand.nextInt(q2 - q1 + 1);
  1073.             int monto   = m1 + rand.nextInt(m2 - m1 + 1);
  1074.             ps.setDate(1, f);
  1075.             ps.setInt(2, idProducto);
  1076.             ps.setInt(3, idLocal);
  1077.             ps.setInt(4, cantidad);
  1078.             ps.setInt(5, monto);
  1079.             ps.executeUpdate();
  1080.             System.out.println(f + " " + idLocal + " " + idProducto + " " +  cantidad + " " + monto);
  1081.         }
  1082.  
  1083.  
  1084.     }
  1085.     public static Connection Con() throws SQLException {
  1086.         DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
  1087.         Connection conn = null;
  1088.         try {
  1089.             conn = DriverManager.getConnection
  1090.                    ("jdbc:oracle:thin:@oracle.localdomain:1521:orcl", "juan.ortiz1601", "askjzxmnqwpo19");
  1091.         } catch (SQLException exception) {
  1092.             System.out.println("Error en la conexion de bd");
  1093.             System.exit(-1);
  1094.         }
  1095.         return conn;
  1096.     }
  1097. }
  1098. -------------------------------------------------
  1099. -------------------Primo hermano----------------
  1100. CREATE OR REPLACE FUNCTION primoHermanos(R1 number, R2 number)
  1101. RETURN integer AS
  1102. p1 number;
  1103. m1 number;
  1104. p2 number;
  1105. m2 number;
  1106. ph integer;
  1107. BEGIN
  1108. SELECT rutPadre, rutMadre INTO p1, m1 FROM PERSONAS WHERE rut = R1;
  1109. SELECT rutPadre, rutMadre INTO p2, m2 FROM PERSONAS WHERE rut = R2;
  1110. ph :=
  1111. sonHermanos(p1,p2);
  1112. ph := ph + sonHermanos(p1, m2);
  1113. ph := ph + sonHermanos(m1, p2);
  1114. ph := ph + sonHermanos(m1, m2);
  1115. return ph;
  1116. END;
  1117. /
  1118. -------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement