Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.23 KB | None | 0 0
  1. SET SERVEROUTPUT ON
  2. --------------------------------------------------------------------------------
  3.  
  4. --EJERCICIO A:
  5.  
  6. DECLARE
  7. V_RUT CLIENTE.RUTCLIENTE%TYPE;
  8. V_NOMBRE CLIENTE.NOMBRE%TYPE;
  9. V_CANT_FACTURAS NUMBER := 0;
  10. V_SUMA_FACTURAS NUMBER := 0;
  11. V_PROMEDIO_FACTURAS NUMBER := 0;
  12. V_MAX_FACTURAS FACTURA.TOTAL%TYPE := 0;
  13. V_MIN_FACTURAS FACTURA.TOTAL%TYPE := 0;
  14.  
  15. ERR_CODIGO NUMBER;
  16. ERR_MENSAJE VARCHAR(255);
  17.  
  18. BEGIN
  19.  
  20. SELECT
  21. C.RUTCLIENTE,
  22. C.NOMBRE,
  23. COUNT(F.RUTCLIENTE),
  24. SUM(F.TOTAL),
  25. AVG(F.TOTAL),
  26. MAX(F.TOTAL),
  27. MIN(F.TOTAL)
  28. INTO
  29. V_RUT,
  30. V_NOMBRE,
  31. V_CANT_FACTURAS,
  32. V_SUMA_FACTURAS,
  33. V_PROMEDIO_FACTURAS,
  34. V_MAX_FACTURAS,
  35. V_MIN_FACTURAS
  36. FROM CLIENTE C
  37. JOIN FACTURA F
  38. ON C.RUTCLIENTE = F.RUTCLIENTE
  39. GROUP BY C.RUTCLIENTE, C.NOMBRE
  40. HAVING COUNT(F.RUTCLIENTE) = (SELECT MAX(COUNT(F.RUTCLIENTE))
  41. FROM CLIENTE C
  42. JOIN FACTURA F
  43. ON C.RUTCLIENTE = F.RUTCLIENTE
  44. GROUP BY C.RUTCLIENTE, C.NOMBRE);
  45.  
  46. DBMS_OUTPUT.PUT_LINE('Rut de Cliente: ' || V_RUT);
  47. DBMS_OUTPUT.PUT_LINE('Nombre de Cliente: ' || V_NOMBRE);
  48. DBMS_OUTPUT.PUT_LINE('Cantidad Facturas: ' || V_CANT_FACTURAS);
  49. DBMS_OUTPUT.PUT_LINE('Monto Total Facturas: ' || V_SUMA_FACTURAS);
  50. DBMS_OUTPUT.PUT_LINE('Monto Promedio Facturas: ' || V_PROMEDIO_FACTURAS);
  51. DBMS_OUTPUT.PUT_LINE('Monto Maximo Facturas: '|| V_MAX_FACTURAS);
  52. DBMS_OUTPUT.PUT_LINE('Monto Minimo Facturas: '|| V_MIN_FACTURAS);
  53.  
  54. EXCEPTION
  55. WHEN OTHERS THEN
  56. ERR_CODIGO := SQLCODE;
  57. ERR_MENSAJE:= SQLERRM;
  58.  
  59. DBMS_OUTPUT.PUT_LINE('CODIGO DEL ERROR :' || ERR_CODIGO);
  60. DBMS_OUTPUT.PUT_LINE('MENSAJE ERROR :' || ERR_MENSAJE);
  61. END;
  62.  
  63. --EJERCICIO B:
  64.  
  65. DECLARE
  66.  
  67. V_RUT1 CLIENTE.RUTCLIENTE%TYPE;
  68. V_NOMBRE1 CLIENTE.NOMBRE%TYPE;
  69. V_TOTAL_FACTURA1 NUMBER := 0;
  70. V_RUT2 CLIENTE.RUTCLIENTE%TYPE;
  71. V_NOMBRE2 CLIENTE.NOMBRE%TYPE;
  72. V_TOTAL_FACTURA2 NUMBER := 0;
  73.  
  74. ERR_CODIGO NUMBER;
  75. ERR_MENSAJE VARCHAR(255);
  76.  
  77. BEGIN
  78.  
  79. SELECT
  80. C.RUTCLIENTE,
  81. C.NOMBRE,
  82. SUM(F.TOTAL)
  83. INTO
  84. V_RUT1,
  85. V_NOMBRE1,
  86. V_TOTAL_FACTURA1
  87. FROM CLIENTE C
  88. JOIN FACTURA F
  89. ON C.RUTCLIENTE = F.RUTCLIENTE
  90. GROUP BY C.RUTCLIENTE, C.NOMBRE
  91. HAVING SUM(F.TOTAL) = (SELECT MAX(SUM(F.TOTAL))
  92. FROM CLIENTE C
  93. JOIN FACTURA F
  94. ON C.RUTCLIENTE = F.RUTCLIENTE
  95. GROUP BY C.RUTCLIENTE, C.NOMBRE);
  96.  
  97. SELECT
  98. C.RUTCLIENTE,
  99. C.NOMBRE,
  100. SUM(F.TOTAL)
  101. INTO
  102. V_RUT2,
  103. V_NOMBRE2,
  104. V_TOTAL_FACTURA2
  105. FROM CLIENTE C
  106. JOIN FACTURA F
  107. ON C.RUTCLIENTE = F.RUTCLIENTE
  108. GROUP BY C.RUTCLIENTE, C.NOMBRE
  109. HAVING SUM(F.TOTAL) = (SELECT MIN(SUM(F.TOTAL))
  110. FROM CLIENTE C
  111. JOIN FACTURA F
  112. ON C.RUTCLIENTE = F.RUTCLIENTE
  113. GROUP BY C.RUTCLIENTE, C.NOMBRE);
  114.  
  115.  
  116. DBMS_OUTPUT.PUT_LINE('Cliente con mayor facturacion:');
  117. DBMS_OUTPUT.PUT_LINE('------------------------------');
  118. DBMS_OUTPUT.PUT_LINE('Rut: ' || V_RUT1 || ' Nombre: ' || V_NOMBRE1 || ' Monto Facturado: ' || V_TOTAL_FACTURA1);
  119.  
  120. DBMS_OUTPUT.PUT_LINE('');
  121. DBMS_OUTPUT.PUT_LINE('');
  122.  
  123. DBMS_OUTPUT.PUT_LINE('Cliente con menor facturacion:');
  124. DBMS_OUTPUT.PUT_LINE('------------------------------');
  125. DBMS_OUTPUT.PUT_LINE('Rut: ' || V_RUT2 || ' Nombre: ' || V_NOMBRE2 || ' Monto Facturado: ' || V_TOTAL_FACTURA2);
  126.  
  127. EXCEPTION
  128. WHEN OTHERS THEN
  129. ERR_CODIGO := SQLCODE;
  130. ERR_MENSAJE:= SQLERRM;
  131.  
  132. DBMS_OUTPUT.PUT_LINE('CODIGO DEL ERROR :' || ERR_CODIGO);
  133. DBMS_OUTPUT.PUT_LINE('MENSAJE ERROR :' || ERR_MENSAJE);
  134.  
  135. END;
  136.  
  137. --EJERCICIO C:
  138.  
  139. DECLARE
  140.  
  141. V_RUT CLIENTE.RUTCLIENTE%TYPE;
  142. V_NOMBRE CLIENTE.NOMBRE%TYPE;
  143. V_DIRECCION CLIENTE.DIRECCION%TYPE;
  144. V_COMUNA CLIENTE.CODCOMUNA%TYPE;
  145. V_CREDITO CLIENTE.CREDITO%TYPE;
  146. V_SALDO CLIENTE.SALDO%TYPE;
  147.  
  148. ERR_CODIGO NUMBER;
  149. ERR_MENSAJE VARCHAR(255);
  150.  
  151. BEGIN
  152.  
  153. SELECT
  154. C.RUTCLIENTE,
  155. C.NOMBRE,
  156. C.DIRECCION,
  157. C.CODCOMUNA,
  158. C.CREDITO,
  159. C.SALDO
  160. INTO
  161. V_RUT,
  162. V_NOMBRE,
  163. V_DIRECCION,
  164. V_COMUNA,
  165. V_CREDITO,
  166. V_SALDO
  167. FROM CLIENTE C
  168. FULL JOIN FACTURA F
  169. ON C.RUTCLIENTE = F.RUTCLIENTE
  170. GROUP BY C.RUTCLIENTE, C.NOMBRE, C.DIRECCION, C.CODCOMUNA, C.CREDITO, C.SALDO
  171. HAVING SUM(F.TOTAL) = (SELECT MAX(SUM(F.TOTAL))
  172. FROM CLIENTE C
  173. JOIN FACTURA F
  174. ON C.RUTCLIENTE = F.RUTCLIENTE
  175. GROUP BY C.RUTCLIENTE, C.NOMBRE);
  176.  
  177. DBMS_OUTPUT.PUT_LINE('ANTECEDENTES DE CLIENTE CON MAYOR FACTURACION');
  178. DBMS_OUTPUT.PUT_LINE('---------------------------------------------');
  179. DBMS_OUTPUT.PUT_LINE('Rut Cliente: ' || TRIM(V_RUT) || ' Nombre Cliente: ' || TRIM(V_NOMBRE));
  180. DBMS_OUTPUT.PUT_LINE('Direccion: ' || TRIM(V_DIRECCION) || ' Comuna: ' || TRIM(V_COMUNA));
  181. DBMS_OUTPUT.PUT_LINE('Credito Aprovado: ' || TRIM(V_CREDITO) || ' Saldo Credito: ' || TRIM(V_SALDO));
  182.  
  183. EXCEPTION
  184. WHEN OTHERS THEN
  185. ERR_CODIGO := SQLCODE;
  186. ERR_MENSAJE:= SQLERRM;
  187.  
  188. DBMS_OUTPUT.PUT_LINE('CODIGO DEL ERROR :' || ERR_CODIGO);
  189. DBMS_OUTPUT.PUT_LINE('MENSAJE ERROR :' || ERR_MENSAJE);
  190.  
  191. END;
  192.  
  193. --EJERCICIO D:
  194.  
  195. DECLARE
  196.  
  197. V_CODPRODUCTO PRODUCTO.CODPRODUCTO%TYPE;
  198. V_DESCRIPCION PRODUCTO.DESCRIPCION%TYPE;
  199. V_CODUNIDAD PRODUCTO.CODUNIDAD%TYPE;
  200. V_PROCEDENCIA PRODUCTO.PROCEDENCIA%TYPE;
  201. V_TOTALSTOCK PRODUCTO.TOTALSTOCK%TYPE;
  202. V_STKSEGURIDAD PRODUCTO.STKSEGURIDAD%TYPE;
  203. V_CANTIDAD DETALLE_FACTURA.CANTIDAD%TYPE;
  204. V_AUX1 VARCHAR2(15);
  205. V_AUX2 VARCHAR2(15);
  206.  
  207. ERR_CODIGO NUMBER;
  208. ERR_MENSAJE VARCHAR(255);
  209.  
  210. BEGIN
  211.  
  212. SELECT
  213. PR.CODPRODUCTO,
  214. PR.DESCRIPCION,
  215. PR.CODUNIDAD,
  216. PR.PROCEDENCIA,
  217. PR.TOTALSTOCK,
  218. PR.STKSEGURIDAD,
  219. DF.CANTIDAD
  220. INTO
  221. V_CODPRODUCTO,
  222. V_DESCRIPCION,
  223. V_CODUNIDAD,
  224. V_PROCEDENCIA,
  225. V_TOTALSTOCK,
  226. V_STKSEGURIDAD,
  227. V_CANTIDAD
  228.  
  229. FROM PRODUCTO PR
  230. JOIN DETALLE_FACTURA DF
  231. ON PR.CODPRODUCTO = DF.CODPRODUCTO
  232. GROUP BY PR.CODPRODUCTO, PR.DESCRIPCION, PR.CODUNIDAD, PR.PROCEDENCIA, PR.TOTALSTOCK, PR.STKSEGURIDAD, DF.CANTIDAD
  233. HAVING MAX(CANTIDAD) = (SELECT MAX(CANTIDAD) FROM DETALLE_FACTURA);
  234.  
  235. IF V_CODUNIDAD = 'UN' THEN
  236. V_AUX1 := 'UNITARIO';
  237. END IF;
  238.  
  239. IF V_PROCEDENCIA = 'N' THEN
  240. V_AUX2 := 'Nacional';
  241. ELSE
  242. V_AUX2 := 'Internacional';
  243. END IF;
  244.  
  245.  
  246. DBMS_OUTPUT.PUT_LINE('INFORME DE RANKING DE VENTAS DE PRODUCTOS');
  247. DBMS_OUTPUT.PUT_LINE('---------------------------------------------------------------------------------------------------------------------------------------------------------------');
  248. DBMS_OUTPUT.PUT_LINE('CODPRODUCTO:' || V_CODPRODUCTO || ' - DESCRIPCION:' || TRIM(V_DESCRIPCION) || ' - UNIDAD MEDIDA:' || V_AUX1 || ' - PROCEDENCIA:' || V_AUX2 ||
  249. ' - TOTAL STOCK:' || V_TOTALSTOCK || ' - STOCK SEGURIDAD:' || V_STKSEGURIDAD || ' - TOTAL FACTURADO:' || V_CANTIDAD);
  250.  
  251. EXCEPTION
  252. WHEN OTHERS THEN
  253. ERR_CODIGO := SQLCODE;
  254. ERR_MENSAJE:= SQLERRM;
  255.  
  256. DBMS_OUTPUT.PUT_LINE('CODIGO DEL ERROR :' || ERR_CODIGO);
  257. DBMS_OUTPUT.PUT_LINE('MENSAJE ERROR :' || ERR_MENSAJE);
  258.  
  259. END;
  260.  
  261. --EJERCICIO E:
  262.  
  263. DECLARE
  264.  
  265. V_TOTAL_VALORPESO NUMBER := 0;
  266. V_TOTAL_VALORDOLAR NUMBER := 0;
  267. V_TOTAL NUMBER := 0;
  268.  
  269. ERR_CODIGO NUMBER;
  270. ERR_MENSAJE VARCHAR(255);
  271.  
  272. BEGIN
  273. SELECT
  274. SUM(VALORPESO * TOTALSTOCK)
  275. INTO
  276. V_TOTAL_VALORPESO
  277. FROM PRODUCTO
  278. WHERE PROCEDENCIA = 'N';
  279.  
  280. SELECT
  281. SUM(VALORDOLAR * TOTALSTOCK * 628.65)
  282. INTO
  283. V_TOTAL_VALORDOLAR
  284. FROM PRODUCTO
  285. WHERE PROCEDENCIA = 'I';
  286.  
  287. DBMS_OUTPUT.PUT_LINE('INFORME DE VALORIZACION DE BODEGA');
  288. DBMS_OUTPUT.PUT_LINE('--------------------------------------');
  289. DBMS_OUTPUT.PUT_LINE('SUMA PRODUCTO NACIONAL: ' || V_TOTAL_VALORPESO);
  290. DBMS_OUTPUT.PUT_LINE(' ');
  291. DBMS_OUTPUT.PUT_LINE('SUMA PRODUCTO IMPORTADO: ' || V_TOTAL_VALORDOLAR);
  292. DBMS_OUTPUT.PUT_LINE(' ');
  293. V_TOTAL := V_TOTAL_VALORDOLAR + V_TOTAL_VALORPESO;
  294. DBMS_OUTPUT.PUT_LINE('SUMA TOTAL (NACIONAL + IMPORTADO): ' || V_TOTAL);
  295.  
  296. EXCEPTION
  297. WHEN OTHERS THEN
  298. ERR_CODIGO := SQLCODE;
  299. ERR_MENSAJE:= SQLERRM;
  300.  
  301. DBMS_OUTPUT.PUT_LINE('CODIGO DEL ERROR :' || ERR_CODIGO);
  302. DBMS_OUTPUT.PUT_LINE('MENSAJE ERROR :' || ERR_MENSAJE);
  303. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement