Advertisement
Guest User

Untitled

a guest
May 13th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 31.05 KB | None | 0 0
  1. Apuntes Juan Carlitos
  2. ---------------------Primos Hermanos---------------
  3. CREATE OR REPLACE FUNCTION primoHermanos(R1 number, R2 number)
  4. RETURN integer AS
  5. p1 number;
  6. m1 number;
  7. p2 number;
  8. m2 number;
  9. ph integer;
  10. BEGIN
  11. SELECT rutPadre, rutMadre INTO p1, m1 FROM PERSONAS WHERE rut = R1;
  12. SELECT rutPadre, rutMadre INTO p2, m2 FROM PERSONAS WHERE rut = R2;
  13. ph :=
  14. sonHermanos(p1,p2);
  15. ph := ph + sonHermanos(p1, m2);
  16. ph := ph + sonHermanos(m1, p2);
  17. ph := ph + sonHermanos(m1, m2);
  18. return ph;
  19. END;
  20. /
  21. ---------------------------------------------------
  22. ----------------Ejercicio Uno----------------------
  23. CREATE OR REPLACE PROCEDURE abuelos(elRut IN number) as
  24.     rutAbuelo INTEGER;
  25.     rutAbuela INTEGER;
  26.     rutP INTEGER;
  27.     rutM INTEGER;
  28.     abuelo nombre%type;
  29.     abuela nombre%type;
  30. BEGIN
  31.     SELECT rutpadre, rutmadre INTO rutP, rutM FROM personas WHERE rut = elRut;
  32.     DBMS_OUTPUT.PUT_LINE("Abuelos de parte del padre");
  33.     SELECT rutpadre,rutmadre INTO rutAbuelo, rutAbuela FROM personas WHERE rut = rutP;
  34.     SELECT nombre INTO abuelo FROM personas WHERE rut = rutAbuelo;
  35.     SELECT nombre INTO abuela FROM personas WHERE rut =rutAbuela;
  36.     DBMS_OUTPUT.PUT_LINE("Abuelo: "||abuelo);
  37.     DBMS_OUTPUT.PUT_LINE("Abuela: "||abuela);
  38.  
  39.     DBMS_OUTPUT.PUT_LINE("Abuelos de parte de la madre");
  40.     SELECT rutpadre, rutmadre INTO rutAbuelo, rutAbuela FROM personas WHERE rut = rutM;
  41.     SELECT nombre INTO abuelo FROM personas WHERE rut = rutAbuelo;
  42.     SELECT nombre INTO abuela FROM personas WHERE rut = rutAbuela;
  43.     DBMS_OUTPUT.PUT_LINE("Abuelo: "||abuelo);
  44.     DBMS_OUTPUT.PUT_LINE("Abuela: "||abuela);
  45. END;
  46. -------------------------------------------------
  47. ------------------Ejercicio Dos------------------
  48. CREATE OR REPLACE FUNCTION sonHermanos(rutUno IN number, rutDOs IN number)
  49. RETURN INTEGER AS
  50.     p1 number;
  51.     m1 number;
  52.     p2 number;
  53.     m2 number;
  54.     tipoHermano INTEGER;
  55. BEGIN
  56.     tipoHermano := 0;
  57.     SELECT rutpadre, rutmadre INTO p1, m1 FROM personas WHERE rut = rutUno;
  58.     SELECT rutpadre, rutmadre INTO p2, m2 FROM personas WHERE rut = rutDOs;
  59.    
  60.     IF (p1 = p2 and m1 = m2) THEN
  61.         tipoHermano := 3;
  62.     ELSIF (m1 = m2) THEN
  63.         tipoHermano := 1;
  64.     ELSIF (p1 = p2) THEN
  65.         tipoHermano := 2;
  66.     END IF;
  67.     return tipoHermano;
  68. END;
  69. /
  70. --------------------------------------------------
  71. --------------------Ejercicio tres----------------
  72. CREATE OR REPLACE PROCEDURE matrizHermanos AS
  73.     type losHermanos IS ARRAY(4) OF INTEGER;
  74.     th losHermanos;
  75.     tht losHermanos;
  76.     CURSOR hermanosUNO IS
  77.     SELECT * FROM PERSONAS;
  78.     h1 hermanos%ROWTYPE;
  79.     CURSOR hermanoDOS IS
  80.     SELECT * FROM PERSONAS;
  81.     h2 hermanos%ROWTYPE;
  82.     tHermano INTEGER;
  83. BEGIN
  84.     tHermano := 0;
  85.     th := losHermanos(0,0,0,0);
  86.     tht := losHermanos(0,0,0,0);
  87.     tht(1) := 0; tht(2) := 0; tht(3) := 0; tht(4) := 0;
  88.     DBMS_OUTPUT.PUT_LINE("Nombre        1   2   3   total");
  89.     DMBS_OUTPUT.PUT_LINE("----------------------------------------------");
  90.     FOR h1 IN hermanoUNO LOOP
  91.         th(1) := 0; th(2) := 0; th(3) := 0; th(4) := 0;
  92.         FOR h2 IN hermanoDOS LOOP
  93.             IF (tHermano <> 0) THEN
  94.                 tHermano sonHermanos(h1,h2);
  95.                 th(tHermano) := th(tHermano) + 1;
  96.                 tht(tHermano) := tht(tHermano) + 1;
  97.                 th(4) := th(4) + 1;
  98.                 tht(4) := tht(4) + 1;
  99.             END IF;
  100.         END LOOP;
  101.         DBMS_OUTPUT.PUT_LINE(h1.nombre||"   "||th(1)||" "||th(2)||" "||th(3)||" "||th(4));
  102.     END LOOP;
  103.     DBMS_OUTPUT.PUT_LINE("Total "||tht(1)||"    "||tht(2)||"    "||tht(3)||"    "||tht(4));
  104. END;
  105. -----------------------------------------------
  106. ----------------Ejercicio Cuatro---------------
  107. CREATE OR REPLACE TRIGGER sonHermanos_tg
  108. BEFORE INSERT ON personas
  109. FOR EACH ROW
  110. DECLARE
  111.     hp INTEGER;
  112.     hm INTEGER;
  113. BEGIN
  114.     hp := sonHermanos(:NEW.rut, :NEW.rutPadre);
  115.     hm := sonHermanos(:NEW:rut, :NEW.rutMadre);
  116.     IF(hp <> 0 AND hm <> 0) THEN
  117.         raise_application_error(-20000,:NEW.NOMBRE||" es hermano de uno de sus padres");
  118.     END IF;
  119. END;
  120. -----------------------------------------------
  121. ------------------Ejercicio Cinco--------------
  122. import java.sql.*;
  123.  
  124. public class phsg {
  125.     public static void main (String args []) throws SQLException){
  126.         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  127.         Connection conn DriverManager.getConnection
  128.          ("jdbc:oracle:thin:@colvin.chillan.ubiobio.cl:1521:orcl","name","pass");
  129.         Statement stmt = conn.createStatement();
  130.  
  131.         ResultSet rs = stmt.executeQuery("SELECT RutPadre, RutMadre FROM personas WHERE");
  132.         rs.next();
  133.         int padre = rs.getInt(1);
  134.         int madre = rs.getInt(2);
  135.         int p1;
  136.         int p2;
  137.         CallableStatement cs1 = conn.prepareCall("begin ? := sonHermanos(?,?); end;");
  138.         cs1.registerOutParameter(1,Types.INTEGER);
  139.         rs = stmt.executeQuery("SELECT NOMBRE, RutPadre, RutMadre FROM PERSONAS WHERE RUT <> 10 AND RutPadre IS NOT NULL and RutMadre IS NOT NULL");
  140.         boolean flag = false;
  141.         while(rs.next(){
  142.             String nombre = rs.getString(1);
  143.             p1 = rs.getInt(2);
  144.             p2 = rs.getInt(3);
  145.             flag = sonPrimosHermanos(padre,p1,conn,cs1)||
  146.                 sonPrimosHermanos(padre,p2,conn,cs1)||
  147.                 sonPrimosHermanos(madre,p1,conn,cs1)||
  148.                 sonPrimosHermanos(madre,p2,conn,cs1;
  149.             if(flag) System.out.println(nombre);
  150.         }
  151.         stmt.close();
  152.        
  153.     }
  154.  
  155.     public boolean sonPrimosHermanos(INT H1, INT H2, Connection conn, CallableStatement cs1){
  156.         cs1.setInt(2,h1);
  157.         cs1.setInt(3,h2);
  158.         cs1.excuteUpdate;
  159.         int resultado = cs1.getInt(1);
  160.         return resultado <> 0; 
  161.     }
  162. }
  163. -------------------------------------------------
  164. --------------------ObtenerMayorArea-------------
  165. import java.util.Scanner;
  166. import java.sql.*;
  167. public class obtenerMayorArea{
  168.         public static void main (String args[]) throws SQLException{
  169.                 Scanner tec = new Scanner(System.in);
  170.                 System.out.print("Obtener areas de rectangulos mayores que el rectangulo con id: ");
  171.         int idC = tec.nextInt();
  172.        
  173.         //Instalar drivers
  174.         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  175.        
  176.         //Establecer conexion
  177.         Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@oracle.localdomain:1521:orcl","juan.ortiz1601","askjzxmnqwpo19");
  178.        
  179.         //Realizar consulta
  180.         Statement stmt = conn.createStatement();
  181.         ResultSet rs = stmt.executeQuery("SELECT RID FROM RECTANGULO WHERE RID <> "+idC);
  182.  
  183.         //Calcular area de  rectangulo solicitado
  184.         CallableStatement cs = conn.prepareCall("begin ? :=rectangleTools.Area(?);end;");
  185.         cs.registerOutParameter(1,Types.DOUBLE);
  186.         cs.setInt(2,idC);
  187.         cs.executeUpdate();    
  188.         double a = cs.getDouble(1);
  189.         System.out.println("Area del rectangulo "+idC+" es "+a);
  190.  
  191.         //Comparar con el area de los demas rectangulos
  192.         int idAux = 0;
  193.         double area = 0;
  194.         System.out.println("A continuacion, los rectangulos mayores");
  195.         while(rs.next()){
  196.             idAux = rs.getInt("RID");
  197.             cs.setInt(2,idAux);
  198.             cs.executeUpdate();
  199.             area = cs.getDouble(1);
  200.             if(area>a){
  201.                 System.out.println("Area del rectangulo "+idAux+" es "+area);
  202.             }
  203.         }
  204.         cs.close();
  205.         stmt.close();
  206.         }  
  207. }
  208. -----------------------------------------------------
  209. ----------------------Inser Amigo--------------------
  210. import java.util.Scanner;
  211. import java.sql.*;
  212. public class insertarAmigos{
  213.     public static void main(String args[])throws SQLException{
  214.         Scanner tec = new Scanner(System.in);
  215.         //Cargar driver
  216.         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  217.         //Establecer conexion con la base de datos
  218.         Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@oracle.localdomain:1521:orcl", "juan.ortiz1601", "askjzxmnqwpo19");
  219.        
  220.        
  221.        
  222.         PreparedStatement ps = conn.prepareStatement("INSERT INTO AMIGOS VALUES(?,?,?,?,?,NULL,NULL)");
  223.        
  224.         while(true){
  225.             //Solicitar datos
  226.             System.out.println("---- datos del amigo ----");
  227.             System.out.print("ID (-1 --> termina) :");
  228.             int elId = tec.nextInt();
  229.  
  230.             //Si es menor que 0, termina el programa
  231.             if(elId<0){
  232.                 ps.close();
  233.                 System.exit(-1);
  234.             }
  235.  
  236.             System.out.print("Nombre: ");
  237.             String nombre = tec.next();
  238.  
  239.             System.out.print("Celular: ");
  240.             int celular = tec.nextInt();
  241.  
  242.             System.out.print("Fecha Nacimiento (aaaa-mm-dd): ");
  243.             Date fechaNac = Date.valueOf(tec.next());
  244.  
  245.             System.out.print("Sexo (M/F): ");
  246.             String sexo = tec.next();
  247.  
  248.             ps.setInt(1,elId);
  249.             ps.setString(2,nombre);
  250.             ps.setInt(3,celular);
  251.             ps.setDate(4,fechaNac);
  252.             ps.setString(5,sexo);
  253.             ps.executeUpdate();
  254.         }
  255.     }
  256. }
  257. -----------------------------------------------------
  258. ----------------Lab 4 Ej1----------------------------
  259. public class familiares{
  260.     public static void main(String []args) throws SQLException{
  261.         Scanner tec = new Scanner(System.in);
  262.         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  263.  
  264.         Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@oracle.localdomain:1521:orcl","juan.ortiz1601","askjzxmnqwpo19");
  265.         Statement stmt = conn.createStatement();
  266.  
  267.         System.out.print("ID: ");
  268.         int id = tec.nextInt();
  269.         boolean flag = verificarId(id, stmt);
  270.         if(!flag) System.exit(-1);
  271.  
  272.         mostrarMenu();
  273.         int parentesco = tec.nextInt();
  274.  
  275.         //Variables
  276.         int papaMama[] = new int[2];
  277.         int papaMamaP[] = new int[2];
  278.         int papaMamaM[] = new int[2];
  279.         String mama = null;
  280.         String papa = null;
  281.  
  282.         switch(parentesco) {
  283.             case 1:
  284.                 int idPadre = 0;
  285.                 int idMadre = 0;
  286.                 ResultSet rs = stmt.executeQuery ("SELECT idPadre, idMadre FROM AMIGOS where id = " + id);
  287.                 while (rs.next ( )) {
  288.                     idPadre = rs.getInt ("idPadre");
  289.                     idMadre = rs.getInt ("idMadre");
  290.                 }
  291.                 if (idPadre != 0) {
  292.                     String nombreP = solicitarNombre (idPadre, stmt);
  293.                     System.out.println ("Padre: " + nombreP);
  294.                 } else {
  295.                     System.out.print ("Sin padre");
  296.                 }
  297.                 if (idMadre != 0) {
  298.                     String nombreM = solicitarNombre (idMadre, stmt);
  299.                     System.out.println ("Madre: " + nombreM);
  300.                 } else {
  301.                     System.out.println ("Sin madre");
  302.                 }
  303.                 break;
  304.             case 2:
  305.                 String abueloP = null;
  306.                 String abuelaP = null;
  307.                 String abueloM = null;
  308.                 String abuelaM = null;
  309.                 papaMama = solicitarPadres (id, stmt);
  310.                 papaMamaP = solicitarPadres (papaMama[0], stmt);
  311.                 papaMamaM = solicitarPadres (papaMama[1], stmt);
  312.  
  313.  
  314.                 if (papaMamaP[0] != 0) abueloP = solicitarNombre (papaMamaP[0], stmt);
  315.                 System.out.println ("Abuelo paterno: " + abueloP);
  316.                 if (papaMamaP[1] != 0) abuelaP = solicitarNombre (papaMamaP[1], stmt);
  317.                 System.out.println ("Abuela paterno: " + abuelaP);
  318.                 if (papaMamaM[0] != 0) abueloM = solicitarNombre (papaMamaM[0], stmt);
  319.                 System.out.println ("Abuelo materno: " + abueloM);
  320.                 if (papaMamaM[1] != 0) abuelaM = solicitarNombre (papaMamaM[1], stmt);
  321.                 System.out.println ("Abuela materna: " + abuelaM);
  322.  
  323.  
  324.                 break;
  325.             case 3:
  326.                 List<String> hijos = solicitarHijos (id, stmt);
  327.                 for (String i : hijos) {
  328.                     System.out.println (i);
  329.                 }
  330.                 break;
  331.             case 4:
  332.                 papaMama = solicitarPadres (id, stmt);
  333.                 List<String> hermanoUno = solicitarHijos (papaMama[0], stmt);
  334.                 String nombre = solicitarNombre (id, stmt);
  335.                 List<String> hermanoDos = solicitarHijos (papaMama[1], stmt);
  336.                 for (String hermano : hermanoUno) {
  337.                     if (nombre.equals (hermano)) {
  338.  
  339.                     } else {
  340.                         System.out.println (hermano);
  341.                     }
  342.                 }
  343.                 for (String hermano : hermanoDos) {
  344.                     if (nombre.equals (hermano)) {
  345.  
  346.                     } else {
  347.                         System.out.println (hermano);
  348.                     }
  349.                 }
  350.                 break;
  351.             case 5:
  352.                 papaMama = solicitarPadres (id, stmt);
  353.                 papaMamaP = solicitarPadres (papaMama[0], stmt);
  354.                 papaMamaM = solicitarPadres (papaMama[1], stmt);
  355.                 List<String> tiosUno = solicitarHijos (papaMamaP[0], stmt);
  356.                 List<String> tiosDos = solicitarHijos (papaMamaP[1], stmt);
  357.                 List<String> tiosTres = solicitarHijos (papaMamaM[0], stmt);
  358.                 List<String> tiosCuatro = solicitarHijos (papaMamaM[1], stmt);
  359.                 papa = solicitarNombre (papaMama[0], stmt);
  360.                 mama = solicitarNombre (papaMama[1], stmt);
  361.                 for (String tios : tiosUno) {
  362.                     if (tios.equals (papa) || tios.equals (mama)) {
  363.  
  364.                     } else {
  365.                         System.out.println (tios);
  366.                     }
  367.                 }
  368.                 for (String tios : tiosDos) {
  369.                     if (tios.equals (papa) || tios.equals (mama)) {
  370.  
  371.                     } else {
  372.                         System.out.println (tios);
  373.                     }
  374.                 }
  375.                 for (String tios : tiosTres) {
  376.                     if (tios.equals (papa) || tios.equals (mama)) {
  377.  
  378.                     } else {
  379.                         System.out.println (tios);
  380.                     }
  381.                 }
  382.                 for (String tios : tiosCuatro) {
  383.                     if (tios.equals (papa) || tios.equals (mama)) {
  384.  
  385.                     } else {
  386.                         System.out.println (tios);
  387.                     }
  388.                 }
  389.                 break;
  390.             case 6:
  391.                 papaMama = solicitarPadres (id, stmt);
  392.                 papaMamaP = solicitarPadres (papaMama[0], stmt);
  393.                 papaMamaM = solicitarPadres (papaMama[1], stmt);
  394.                 List<Integer> tios1 = solicitarHijosID (papaMamaP[0], stmt);
  395.                 List<String> hijosUno = null;
  396.                 List<String> hijosDos = null;
  397.                 List<String> hijosTres = null;
  398.                 List<String> hijosCuatro = null;
  399.                 for (int losTios : tios1) {
  400.                     hijosUno = solicitarHijos (losTios, stmt);
  401.                 }
  402.                 List<Integer> tios2 = solicitarHijosID (papaMamaP[1], stmt);
  403.                 for (int losTios : tios2) {
  404.                     hijosDos = solicitarHijos (losTios, stmt);
  405.                 }
  406.                 List<Integer> tios3 = solicitarHijosID (papaMamaM[0], stmt);
  407.                 for (int losTios : tios3) {
  408.                     hijosTres = solicitarHijos (losTios, stmt);
  409.                 }
  410.                 List<Integer> tios4 = solicitarHijosID (papaMamaM[1], stmt);
  411.                 for (int losTios : tios4) {
  412.                     hijosCuatro = solicitarHijos (losTios, stmt);
  413.                 }
  414.                 nombre = solicitarNombre (id, stmt);
  415.                 for (String hijo : hijosUno) {
  416.                     if (hijo.equals (nombre)) {
  417.  
  418.                     } else {
  419.                         System.out.println (hijo);
  420.                     }
  421.                 }
  422.  
  423.                 for (String hijo : hijosDos) {
  424.                     if (hijo.equals (nombre)) {
  425.  
  426.                     } else {
  427.                         System.out.println (hijo);
  428.                     }
  429.                 }
  430.  
  431.                 for (String hijo : hijosTres) {
  432.                     if (hijo.equals (nombre)) {
  433.  
  434.                     } else {
  435.                         System.out.println (hijo);
  436.                     }
  437.                 }
  438.  
  439.                 for (String hijo : hijosCuatro) {
  440.                     if (hijo.equals (nombre)) {
  441.  
  442.                     } else {
  443.                         System.out.println (hijo);
  444.                     }
  445.                 }
  446.  
  447.                 break;
  448.             default:
  449.                 System.out.println ("Ha ingresado una opcion incorrecta");
  450.         }
  451.     }
  452.  
  453.     public static List<Integer> solicitarHijosID(int id, Statement stmt) throws SQLException{
  454.         List<Integer> hijos = new LinkedList<>();
  455.         ResultSet rs = stmt.executeQuery("SELECT id FROM AMIGOS where idPadre = "+id);
  456.         while(rs.next()){
  457.             hijos.add(rs.getInt("id"));
  458.         }
  459.         rs = stmt.executeQuery("SELECT id FROM AMIGOS where idMadre = "+id);
  460.         while(rs.next()){
  461.             hijos.add(rs.getInt("id"));
  462.         }
  463.         return hijos;
  464.     }
  465.  
  466.     public static List<String> solicitarHijos(int id, Statement stmt) throws SQLException{
  467.         List<String> hijos = new LinkedList<>();
  468.         ResultSet rs = stmt.executeQuery("SELECT nombre FROM AMIGOS where idPadre = "+id);
  469.         while(rs.next()){
  470.             hijos.add(rs.getString("nombre"));
  471.         }
  472.         rs = stmt.executeQuery("SELECT nombre FROM AMIGOS where idMadre = "+id);
  473.         while(rs.next()){
  474.             hijos.add(rs.getString("nombre"));
  475.         }
  476.         return hijos;
  477.     }
  478.  
  479.     public static int [] solicitarPadres(int id, Statement stmt) throws SQLException{
  480.         ResultSet rs = stmt.executeQuery("SELECT idPadre, idMadre FROM AMIGOS where id = "+id);
  481.         rs.next();
  482.         int idPadre = rs.getInt("idPadre");
  483.         int idMadre = rs.getInt("idMadre");
  484.         int papaMama[] = new int[2];
  485.         papaMama[0] = idPadre;
  486.         papaMama[1] = idMadre;
  487.         return papaMama;
  488.     }
  489.  
  490.     public static String solicitarNombre(int id,Statement stmt) throws SQLException{
  491.         ResultSet rs = stmt.executeQuery("SELECT nombre FROM amigos WHERE id = "+id);
  492.         rs.next();
  493.         return rs.getString("nombre");
  494.     }
  495.  
  496.     public static boolean verificarId(int id, Statement stmt) throws SQLException{
  497.         ResultSet rs = stmt.executeQuery("SELECT id FROM amigos");
  498.         while(rs.next()){
  499.             if(rs.getInt("id") == id){
  500.                 return true;
  501.             }
  502.         }
  503.         return false;
  504.     }
  505.  
  506.     public static void mostrarMenu(){
  507.         System.out.println("Parentesco: ");
  508.         System.out.println("1. padres");
  509.         System.out.println("2. abuelos");
  510.         System.out.println("3. hijos");
  511.         System.out.println("4. hermanos");
  512.         System.out.println("5. tios");
  513.         System.out.println("6. primos");
  514.     }
  515. }
  516. -----------------------------------------------------
  517. -------------------Lab 4 ej2-------------------------
  518. public class ejercicioDos {
  519.     public static void main(String[] args) throws SQLException{
  520.         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  521.  
  522.         Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@colvin.chillan.ubiobio.cl:1521:orcl","juan.ortiz1601","askjzxmnqwpo19");
  523.         Statement stmt = conn.createStatement();
  524.         CallableStatement cs = conn.prepareCall("begin ? := RectangleTools.puntoenRectangulo(?,?,?); end;");
  525.         cs.registerOutParameter(1, Types.INTEGER);
  526.        
  527.         //Variables
  528.         int id1 = 2;
  529.         int id2 = 4;
  530.         int [] axy1 = new int [2], bxy1 = new int [2], cxy1 = new int [2], dxy1 = new int[2];
  531.         int [] axy2 = new int [2], bxy2 = new int [2], cxy2 = new int [2], dxy2 = new int[2];
  532.         boolean flag1 = false, flag2 = false, flag3 = false, flag4 = false;
  533.        
  534.         ResultSet rs = stmt.executeQuery("SELECT * FROM RECTANGULO WHERE rid = "+id1);
  535.         if(!rs.next())System.exit(0);
  536.         bxy1[0] = rs.getInt(4); bxy1[1] = rs.getInt(5);//XH, YH
  537.         cxy1[0] = rs.getInt(2); cxy1[1] = rs.getInt(3);//XL, YL
  538.         axy1[0] = cxy1[0]; axy1[1] = bxy1[1];//XL,YH
  539.         dxy1[0] = bxy1[0]; dxy1[1] = cxy1[1];//XH,YL
  540.        
  541.         rs = stmt.executeQuery("SELECT * FROM RECTANGULO WHERE RID = "+id2);
  542.         if(!rs.next()) System.exit(0);
  543.         bxy2[0] = rs.getInt(4); bxy2[1] = rs.getInt(5);//XH, YH
  544.         cxy2[0] = rs.getInt(2); cxy2[1] = rs.getInt(3);//XL, YL
  545.         axy2[0] = cxy2[0]; axy2[1] = bxy2[1];//XL,YH
  546.         dxy2[0] = bxy2[0]; dxy2[1] = cxy2[1];//XH,YL
  547.        
  548.         cs.setDouble(4, id2);//id
  549.         cs.setDouble(2, bxy1[0]);
  550.         cs.setDouble(3, bxy1[1]);
  551.         cs.executeUpdate();
  552.         if(cs.getInt(1) == 1) flag1 = true;
  553.        
  554.         cs.setDouble(2, cxy1[0]);
  555.         cs.setDouble(3, cxy1[1]);
  556.         cs.executeUpdate();
  557.         if(cs.getInt(1) == 1) flag2 = true;
  558.        
  559.         cs.setDouble(2, axy1[0]);
  560.         cs.setDouble(3, axy1[1]);
  561.         cs.executeUpdate();
  562.         if(cs.getInt(1) == 1) flag3 = true;
  563.        
  564.         cs.setDouble(2, dxy1[0]);
  565.         cs.setDouble(3, dxy1[1]);
  566.         cs.executeUpdate();
  567.         if(cs.getInt(1) == 1) flag4 = true;
  568.        
  569.         if(flag1 && flag2 && flag3 && flag4){
  570.             System.out.println("El rectangulo con ID = "+id1+" es subconjunto del rectangulo con ID = "+id2);
  571.             System.exit(0);
  572.         }
  573.         else{
  574.             if (flag1 || flag2 || flag3 || flag4) {
  575.                 System.out.println("El rectangulo con ID = "+id1+" y el rectangulo con ID = "+id2+" se intersectan");
  576.                 System.exit(0);
  577.             }
  578.         }
  579.         flag1 = false;
  580.         flag2 = false;
  581.         flag3 = false;
  582.         flag4 = false;
  583.        
  584.         cs.setDouble(4, id1);//id
  585.         cs.setDouble(2, bxy2[0]);
  586.         cs.setDouble(3, bxy2[1]);
  587.         cs.executeUpdate();
  588.         if(cs.getInt(1) == 1) flag1 = true;
  589.        
  590.         cs.setDouble(2, cxy2[0]);
  591.         cs.setDouble(3, cxy2[1]);
  592.         cs.executeUpdate();
  593.         if(cs.getInt(1) == 1) flag2 = true;
  594.        
  595.         cs.setDouble(2, axy2[0]);
  596.         cs.setDouble(3, axy2[1]);
  597.         cs.executeUpdate();
  598.         if(cs.getInt(1) == 1) flag3 = true;
  599.        
  600.         cs.setDouble(2, dxy2[0]);
  601.         cs.setDouble(3, dxy2[1]);
  602.         cs.executeUpdate();
  603.         if(cs.getInt(1) == 1) flag4 = true;
  604.        
  605.         if(flag1 && flag2 && flag3 && flag4){
  606.             System.out.println("El rectangulo con ID = "+id2+" es subconjunto del rectangulo con ID = "+id1);
  607.             System.exit(0);
  608.         }
  609.         else{
  610.             if (flag1 || flag2 || flag3 || flag4) {
  611.                 System.out.println("El rectangulo con ID = "+id1+" y el rectangulo con ID = "+id2+" se intersectan");
  612.                 System.exit(0);
  613.             }
  614.             else{
  615.                 System.out.println("Los rectangulos no se intersectan");
  616.             }
  617.         }
  618.     }
  619. }
  620. -----------------------------------------------------
  621. ------------------Lab 4 ej3--------------------------
  622. public class ejercicioTres {
  623.     public static void main(String[] args) throws SQLException{
  624.         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  625.  
  626.         Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@colvin.chillan.ubiobio.cl:1521:orcl","juan.ortiz1601","askjzxmnqwpo19");
  627.         Statement stmt = conn.createStatement();
  628.        
  629.         ResultSet rs = stmt.executeQuery("SELECT nombre, edadAmigo(id) as edad FROM AMIGOS ORDER BY edad");
  630.         while(rs.next()){
  631.             if(rs.getString(1).length()>11) System.out.println(rs.getString(1)+"\t"+rs.getInt(2));
  632.             else System.out.println(rs.getString(1)+"\t\t\t"+rs.getInt(2));
  633.         }
  634.         rs.close();
  635.     }
  636. }
  637. ----------------------------------------------------
  638. ----------------------edad--------------------------
  639.   CREATE OR REPLACE FUNCTION "JUAN.ORTIZ1601"."EDAD" (id number) RETURN VARCHAR AS
  640. CURSOR edades IS
  641. SELECT * FROM amigos;
  642. elAmigo amigos%ROWTYPE;
  643. fnac_amigo DATE;
  644. actual DATE;
  645. edad NUMBER;
  646. menor NUMBER;
  647. nombre amigos.nombre%type;
  648. BEGIN
  649.         menor := 150;
  650.         SELECT SYSDATE INTO actual FROM DUAL;
  651.         FOR elAmigo in edades LOOP
  652.                 edad := (actual-elAmigo.fnac)/365;
  653.                 if(edad<=menor) THEN
  654.                 menor := edad;
  655.                 nombre := elAmigo.nombre;
  656.                 end if;
  657.         END LOOP;
  658.         RETURN nombre;
  659. END;
  660. /
  661. -----------------------------------------------------
  662. -------------------edad Amigo------------------------
  663. CREATE OR REPLACE FUNCTION "JUAN.ORTIZ1601"."EDADAMIGO" (idAmigo integer) RETURN INTEGER AS
  664.     edad INTEGER;
  665.     actual DATE;
  666.     fecha amigos.fnac%type;
  667. BEGIN
  668.     SELECT SYSDATE INTO actual FROM DUAL;
  669.     SELECT fnac INTO fecha FROM AMIGOS WHERE id = idAmigo;
  670.     edad := FLOOR((actual-fecha)/365);
  671.     return edad;
  672. END;
  673.  
  674. /
  675. -----------------------------------------------------
  676. ----------------fechamasCercana----------------------
  677.   CREATE OR REPLACE FUNCTION "JUAN.ORTIZ1601"."FECHAMASCERCANA" (id int) RETURN INTEGER AS
  678.     CURSOR AMIGOS IS
  679.     SELECT * FROM AMIGOS;
  680.     elAmigo amigos%ROWTYPE;
  681.     referencia DATE;
  682.     menor NUMBER;
  683.     idAmigo INTEGER;
  684.     auxiliar NUMBER;
  685. BEGIN
  686.     menor := 2000;
  687.     referencia := '31-12-1999';
  688.     FOR elAmigo IN AMIGOS LOOP
  689.         auxiliar := (referencia-elAmigo.fnac)/365;
  690.         if(auxiliar < 0) THEN
  691.             auxiliar := auxiliar*-1;
  692.         end if;
  693.         if(menor>auxiliar) THEN
  694.             idAmigo := elAmigo.id;
  695.             menor := auxiliar;
  696.         END IF;
  697.     END LOOP;
  698.     return idAmigo;
  699. END;
  700. /
  701. ---------------------------------------------------
  702. -----------------masJoven--------------------------
  703. CREATE OR REPLACE REPLACE FUNCTION edad() RETURN NUMBER AS
  704. CURSOR edades IS
  705. SELECT * FROM amigos;
  706. elAmigo amigos%ROWTYPE;
  707. fnac_amigo DATE;
  708. now DATE;
  709. edad NUMBER;
  710. menor NUMBER;
  711. BEGIN
  712.     menor := 150;
  713.     SELECT SYSDATE INTO now FROM DUAL;
  714.     FOR elAmigo in edades LOOP
  715.         edad := (now-elAmigo.fnac)/365;
  716.         if(edad<=menor) THEN menor := edad;
  717.         end if;
  718.     END LOOP
  719.     RETURN menor;
  720. END;
  721. ---------------------------------------------------
  722. --------------------package body------------------
  723. create or replace PACKAGE BODY PointTools IS
  724.  
  725. FUNCTION iguales(x INTEGER,y INTEGER,IDP INTEGER)
  726.     RETURN INTEGER IS
  727.     p puntos%rowtype;
  728. BEGIN
  729.     OPEN misPuntos(IDP);
  730.     FETCH misPuntos INTO p;
  731.     IF (x = p.x and y = p.y) THEN
  732.         close misPuntos;
  733.         return 1;
  734.     ElSE
  735.         close misPuntos;
  736.         RETURN 0;
  737.     END IF;
  738. END iguales;
  739.  
  740. FUNCTION distancia(x INTEGER,y INTEGER,IDP INTEGER)
  741.     RETURN INTEGER IS
  742.     P PUNTOS%ROWTYPE;
  743.     distancia INTEGER;
  744. BEGIN
  745.     OPEN misPuntos(IDP);
  746.     FETCH misPuntos INTO p;
  747.     distancia := SQRT((x-p.x)**2+(y-p.y)**2);
  748.     CLOSE misPuntos;
  749.     RETURN distancia;
  750. END distancia;
  751.  
  752. FUNCTION enCirculo(x INTEGER,y INTEGER, r NUMBER,IDP INTEGER)
  753.     RETURN INTEGER IS
  754.     p puntos%ROWTYPE;
  755.     distancia NUMBER;
  756. BEGIN
  757.     OPEN misPuntos(IDP);
  758.     FETCH misPuntos INTO p;
  759.     distancia := sqrt((x-p.x)**2+(y-p.y)**2);
  760.     CLOSE misPuntos;
  761.     if(distancia<r) THEN
  762.         RETURN 1;
  763.     END IF;
  764.     RETURN 0;
  765. END enCirculo;
  766. END PointTools;
  767. ----------------------------------------------
  768. ----------------------Point Tools------------
  769. CREATE OR REPLACE PACKAGE "JUAN.ORTIZ1601"."POINTTOOLS" IS
  770.     CURSOR misPuntos(id puntos.pid%type) is SELECT * FROM PUNTOS WHERE pid = id;
  771.     -- Verificar si dos puntos son iguales
  772.     FUNCTION iguales (x INTEGER, y INTEGER, IDP INTEGER)
  773.     RETURN INTEGER;
  774.  
  775.     -- CALULAR LA DISTANCIA EUCLÍDEA ENTRE EL PUNTO (x,y) e IDP
  776.     FUNCTION distancia (x INTEGER, Y INTEGER, IDP INTEGER)
  777.     RETURN INTEGER;
  778.  
  779.     /* Verificar si un punto se encuentra dentro de un circulo
  780.     con centro (x,y) y radio r*/
  781.     FUNCTION enCirculo (x INTEGER, y INTEGER, r NUMBER, IDP INTEGER)
  782.     RETURN INTEGER;
  783. END;
  784. /
  785. ---------------------------------------------
  786. ----------------Ejercicio profe------------
  787. DECLARE
  788. -- Un ejemplo de cursor explicito
  789.   CURSOR  amg IS
  790.   SELECT * FROM amigos;
  791.   elamigo amigos%ROWTYPE;
  792.   mm20 INTEGER; m2030 INTEGER; m3040 INTEGER; mm40 INTEGER;
  793.   hm20 INTEGER; h2030 INTEGER; h3040 INTEGER; hm40 INTEGER;
  794.   edad  INTEGER;
  795.   FechaSistema DATE;
  796.  BEGIN
  797.   mm20:=0; m2030:=0; m3040:=0;mm40:=0;
  798.   hm20:=0; h2030:=0; h3040:=0;hm40:=0;
  799. -- Fecha del sistema
  800.  SELECT SYSDATE INTO FechaSistema FROM DUAL;
  801.  FOR elamigo in amg LOOP
  802. -- se calcula la edad (en años) de cada amigo
  803.    edad := (FechaSistema - elamigo.fnac) / 365;
  804. -- Mujeres
  805.    IF (elamigo.sexo='F') THEN
  806.     IF edad < 20 THEN mm20 := mm20+1;
  807.       ELSIF edad >= 20 and edad <=30  THEN m2030 := m2030+1;
  808.       ELSIF edad >= 30 and edad <=40  THEN m3040 := m3040+1;
  809.       ELSE mm40 := mm40 +1;
  810.     END IF;
  811. -- Hombres
  812.    ELSE
  813.     IF edad < 20 THEN hm20 := hm20+1;
  814.       ELSIF edad >= 20 and edad <=30  THEN h2030 := h2030+1;
  815.       ELSIF edad >= 30 and edad <=40  THEN h3040 := h3040+1;
  816.       ELSE hm40 := hm40 +1;
  817.     END IF;
  818.   END IF;
  819.  END LOOP;
  820.  -- impresión de la tabla
  821.    dbms_output.put_line( '-----------------Rango de edades ----------'  );
  822.    dbms_output.put_line( '   < 20    [20,30]   [30,40]   >40      Total '   );
  823.    dbms_output.put_line( '--------------------------------------------'  );
  824.    dbms_output.put_line( 'Mj ' || mm20 || '       ' || m2030 || '       ' || m3040 || '      ' || '     ' ||  mm40|| '    ' ||  (mm20+m2030+m3040+mm40));
  825.    dbms_output.put_line( 'Hm ' || hm20 || '       ' || h2030 || '       ' || h3040 || '      ' || '     ' ||  hm40 || '    ' || (hm20+h2030+h3040+hm40));
  826.    dbms_output.put_line( '---------------------------------------------'  );
  827.    dbms_output.put_line( 'Tt ' || (mm20+hm20) || '       ' || (h2030+m2030) || '       ' || (m3040+h3040) || '      ' || '     ' || (mm40+ hm40) || '    ' || (mm20+hm20+m2030+h2030+m3040+h3040+mm40+hm40));
  828.    dbms_output.put_line( '---------------------------------------------'  );
  829. END;
  830. --------------------------------------------------
  831. -----------------------parejaMasCasada------------
  832. set define off;
  833.  
  834.   CREATE OR REPLACE PROCEDURE "JUAN.ORTIZ1601"."PAREJAMASCASADA" AS
  835. CURSOR losAmigos IS
  836. SELECT * FROM AMIGOS;
  837. elAmigo AMIGOS%ROWTYPE;
  838.  
  839. CURSOR losCasados IS
  840. SELECT * FROM CASADOS;
  841. elCasado CASADOS%ROWTYPE;
  842.  
  843. anos INTEGER := 0;
  844. flag boolean := false;
  845. idHombre INTEGER;
  846. idMujer INTEGER;
  847. fechaSistema DATE;
  848. BEGIN
  849.     SELECT SYSDATE INTO fechaSistema FROM DUAL;
  850.     FOR elCasado IN losCasados LOOP
  851.         if(elCasado.fechaSep is null and anos <= (fechaSistema-elCasado.fechaCas)/365) THEN
  852.             anos := (fechaSistema-elCasado.fechaCas)/365;
  853.             idHombre := elCasado.idH;
  854.             idMujer := elCasado.idM;
  855.         ELSIF (anos <= (fechaSistema-elCasado.fechaCas)/365) THEN
  856.             anos := (elCasado.fechaSep-elCasado.fechaCas)/365;
  857.             idHombre := elCasado.idH;
  858.             idMujer := elCasado.idM;
  859.         END IF;
  860.     END LOOP;
  861.     FOR elAmigo IN losAmigos LOOP
  862.         if(elAmigo.id = idHombre or elAmigo.id = idMujer) THEN
  863.             DBMS_OUTPUT.PUT_LINE(elAmigo.nombre);
  864.         END IF;
  865.     END LOOP;
  866.     DBMS_OUTPUT.PUT_LINE('Su matrimonio a durado '||anos||' anos');
  867. end;
  868. /
  869. --------------------------------------------------
  870. ----------------------updateMatrimonio------------
  871. CREATE OR REPLACE TRIGGER "JUAN.ORTIZ1601"."UPDATEMATRIMONIO"
  872.     BEFORE UPDATE ON CASADOS
  873.     FOR EACH ROW
  874.      WHEN (OLD.FechaSep is null) DECLARE
  875.     duracion INTEGER;
  876. BEGIN
  877.     duracion := FLOOR((:NEW.FechaSep-:OLD.FechaCas)/365);
  878.     INSERT INTO separacion VALUES(:OLD.IDH,:OLD.IDM,duracion);
  879. end;
  880.  
  881. /
  882. ALTER TRIGGER "JUAN.ORTIZ1601"."UPDATEMATRIMONIO" ENABLE;
  883. --------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement