Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Llamada a procedimiento IN/OUT PL/SQL

Estas en el tema de Llamada a procedimiento IN/OUT PL/SQL en el foro de Oracle en Foros del Web. Wenas tengo aqui un ejerccio pero nose como debo hacerle la llamada porque me sale que debo declarar la variable y nose como lo tengo ...
  #1 (permalink)  
Antiguo 16/06/2013, 16:08
Avatar de Txerrinko  
Fecha de Ingreso: abril-2010
Ubicación: Vitoria-Gasteiz, Pais Vasco, Spain, Spain
Mensajes: 45
Antigüedad: 14 años
Puntos: 0
Exclamación Llamada a procedimiento IN/OUT PL/SQL

Wenas tengo aqui un ejerccio pero nose como debo hacerle la llamada porque me sale que debo declarar la variable y nose como lo tengo que hacer ,el OUT me hace un lio
Código SQL:
Ver original
  1. SET SERVEROUTPUT ON;
  2.  
  3. CREATE OR REPLACE PROCEDURE CONTARVOC (FRA VARCHAR2, CANTVOC OUT NUMBER) IS
  4.  
  5. BEGIN
  6.  
  7. FOR I IN 1..LENGTH(FRA) LOOP
  8.  
  9.  
  10. IF SUBSTR(FRA,I,1) IN ('A','E','I','O','U') AND SUBSTR(FRA,I,1)!=' ' THEN
  11. CANTVOC:=CANTVOC+1;
  12. --NOS DEVUELVE LA CANTIDAD DE VECES DE LA VARIABLE PASADA POR PARAMETRO
  13. END IF;
  14. END LOOP;
  15. END;
  16. /
  17.  
  18. [/CODE]
  19. [CODE]
  20.  
  21.  
  22. SET SERVEROUTPUT ON;
  23.  
  24. CREATE OR REPLACE FUNCTION CONTARCONS (FRA VARCHAR2 ) RETURN NUMBER IS
  25.  
  26. CONT NUMBER:=0;
  27.  
  28. BEGIN
  29.  
  30.     FOR I  IN 1.. LENGTH(FRA) LOOP
  31.  
  32.         IF SUBSTR(FRA,I,1) NOT IN (' ','A','E','I','O','U') THEN
  33.  
  34.         CONT:=CONT+1;
  35.  
  36.         END IF;
  37.  
  38.     END LOOP;
  39. RETURN CONT;
  40. END;
  41. /
  42.  
  43.  
  44. SET SERVEROUTPUT ON;
  45.  
  46. DECLARE
  47.  
  48.     CURSOR CCLI IS
  49.  
  50.     SELECT NOMBRE
  51.     FROM TCLIENTE;
  52.    
  53.     X CCLI%ROWTYPE;
  54.    
  55.    CANTVOCALES NUMBER(4):=0;
  56.    
  57.    BEGIN
  58.     OPEN CCLI;
  59.     LOOP
  60.     FETCH CCLI INTO X;
  61.     EXIT WHEN CCLI%NOTFOUND;
  62.        
  63.     --PROCEDIMIENTO IN/OUT
  64.     CONTARVOC(X.NOMBRE,CANTVOCALES);
  65.    
  66.     DBMS_OUTPUT.PUT_LINE(X.NOMBRE || ' TIENE  '|| CANTVOCALES ||' VOCALES Y  '||
  67.             CONTARCONS(X.NOMBRE) || ' CONSONANTES');
  68.    
  69.    
  70.     END LOOP;
  71.     CLOSE CCLI;
  72. END;
  73. /
resulta que este es el procedimiento ,y lo que no entiendo es porque despues en
el programa que me creo con el cursor no me aparecen la cantidad de vocales... no me aparece nada .. no se que me falta poner... asi que nose agradeceria que alguien me ayudase

Última edición por gnzsoloyo; 16/06/2013 a las 16:13 Razón: Mal etiquetado
  #2 (permalink)  
Antiguo 17/06/2013, 07:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Llamada a procedimiento IN/OUT PL/SQL

Puede ser uyna pregunta boba... pero ya lo compilaste y creaste el procedimiento y la función. Ya lo ejecutaste/llamaste? Como lo hiciste?

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 17/06/2013, 09:57
Avatar de Txerrinko  
Fecha de Ingreso: abril-2010
Ubicación: Vitoria-Gasteiz, Pais Vasco, Spain, Spain
Mensajes: 45
Antigüedad: 14 años
Puntos: 0
Exclamación Respuesta: Llamada a procedimiento IN/OUT PL/SQL

mm.... ejejej .. sisis estan compilados y ambos funcionan correctamente
  #4 (permalink)  
Antiguo 19/06/2013, 03:34
Avatar de zarwar  
Fecha de Ingreso: mayo-2013
Ubicación: Madrid
Mensajes: 77
Antigüedad: 10 años, 11 meses
Puntos: 4
Respuesta: Llamada a procedimiento IN/OUT PL/SQL

Hola Txerrinko.

Entiendo, que el problema, que tenías, es que la variable "CANTVOCALES", la inicializas en el bloque PL/SQL y aunque la variable está declarada en el procedimiento "CONTARVOC", la tienes sólo como de salida y no de entrada.

Como comentario a parte, si tuvieras un nombre compuesto como "JOSE LUIS", el espacio te lo contaría como consonante. Sólo podría ser escrito con mayúsculas y sin acentos.

Un saludo
__________________
Entra en mi blog sobre base de datos Oracle:
http://mundodb.es

Etiquetas: plsql, procedures
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:56.