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

invocar procedimiento en oracle 10g

Estas en el tema de invocar procedimiento en oracle 10g en el foro de Oracle en Foros del Web. Hola tengo problemas invocando procedimiento en oracle 10g no se q le pasa me da error en sql e incluso si coloco all_all_tables tambien me ...
  #1 (permalink)  
Antiguo 03/05/2009, 17:50
 
Fecha de Ingreso: enero-2009
Mensajes: 178
Antigüedad: 15 años, 3 meses
Puntos: 2
invocar procedimiento en oracle 10g

Hola tengo problemas invocando procedimiento en oracle 10g no se q le pasa me da error en sql e incluso si coloco all_all_tables tambien me da error sql:

CREATE TABLE "BOLETO"
( "SEXO" VARCHAR2(1)
)
/

create or replace procedure "INSERTA_BOLETO"
(sexo boleto.sexo%type)
is
begin
if sexo<>('f') or sexo <>('m')then
raise_application_error(-2001,'que es esoooooo?');
else
insert into boleto values (sexo);
end if;
end "INSERTA_BOLETO";

CUANDO HAGO LA LLAMADA ME DA ERROR HE PROBADO MILES DE FORMAS Y NADA SIRVE:
execute "INSERTA_BOLETO"('m');
execute INSERTA_BOLETO('m');
call "INSERTA_BOLETO"('m');
call INSERTA_BOLETO('m');
"INSERTA_BOLETO"('m');
INSERTA_BOLETO('m');
select "INSERTA_BOLETO"('m') from dual;
select INSERTA_BOLETO('m') from dual;

gracias
  #2 (permalink)  
Antiguo 04/05/2009, 01:05
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: invocar procedimiento en oracle 10g

¿Qué error te da?

Saludos
  #3 (permalink)  
Antiguo 04/05/2009, 02:01
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: invocar procedimiento en oracle 10g

Así a bote pronto veo 2 cosillas :

Esto :

create or replace procedure "INSERTA_BOLETO"
(sexo boleto.sexo%type)

Quizás debería ser

create or replace procedure "INSERTA_BOLETO"
(sexo in boleto.sexo%type)

Y esto

raise_application_error(-2001,'que es esoooooo?');


Quizas debería ser

raise_application_error(-20001,'que es esoooooo?');

El resto parece correcto, pero haz caso a lo que pone Matanga y pon los errores que te da.
  #4 (permalink)  
Antiguo 04/05/2009, 06:41
 
Fecha de Ingreso: enero-2009
Mensajes: 178
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: invocar procedimiento en oracle 10g

ya arregle lo q me puso jc300 y no sucede nada me sigue saliendo el mismo error q dije al principio
ORA-00900: sentencia SQL no válida

si coloco esto
call "INSERTA_BOLETO"('f');
ORA-00911: carácter no válido

LA RPEGUNTA ES COMO LLAMO UN PROCEDIMEINTO DESDE ORACLE 10G?????????
  #5 (permalink)  
Antiguo 04/05/2009, 07:57
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: invocar procedimiento en oracle 10g

Joder, me haceis currar leñe ¡¡¡¡¡¡





Mira, aparte de que tienes que cambiar el OR por un AND el error es este :

raise_application_error(-2001,'que es esoooooo?');

Fijate :


Cita:
sql plus > select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Solaris: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

5 filas seleccionadas.

real: 47
sql plus > CREATE TABLE "BOLETO"
2 ( "SEXO" VARCHAR2(1)
3 )
4 /

Tabla creada.

real: 31
sql plus > create or replace procedure "INSERTA_BOLETO"
2 (sexo boleto.sexo%type)
3 is
4 begin
5 if sexo<>('f') or sexo <>('m')then
6 raise_application_error(-2001,'que es esoooooo?');
7 else
8 insert into boleto values (sexo);
9 end if;
10 end "INSERTA_BOLETO";
11 /

Procedimiento creado.

real: 32
sql plus > execute "INSERTA_BOLETO"('m');
begin "INSERTA_BOLETO"('m'); end;

*
ERROR en línea 1:
ORA-21000: error number argument to raise_application_error of -2001 is out of range
ORA-06512: at "desarrollo.INSERTA_BOLETO", line 6
ORA-06512: at line 1


real: 0
sql plus > create or replace procedure "INSERTA_BOLETO"
2 (sexo boleto.sexo%type)
3 is
4 begin
5 if sexo<>('f') or sexo <>('m')then
6 raise_application_error(-20001,'que es esoooooo?');
7 else
8 insert into boleto values (sexo);
9 end if;
10 end "INSERTA_BOLETO";
11 /

Procedimiento creado.

real: 47
sql plus > execute "INSERTA_BOLETO"('m');
begin "INSERTA_BOLETO"('m'); end;

*
ERROR en línea 1:
ORA-20001: que es esoooooo?
ORA-06512: at "desarrollo.INSERTA_BOLETO", line 6
ORA-06512: at line 1


real: 47
sql plus > insert into boleto values('m');

1 fila creada.

real: 31
sql plus > commit;

Validación terminada.

real: 31
sql plus > execute "INSERTA_BOLETO"('m');
begin "INSERTA_BOLETO"('m'); end;

*
ERROR en línea 1:
ORA-20001: que es esoooooo?
ORA-06512: at "desarrollo.INSERTA_BOLETO", line 6
ORA-06512: at line 1


real: 47
sql plus > create or replace procedure "INSERTA_BOLETO"
2 (sexo boleto.sexo%type)
3 is
4 begin
5 if sexo<>('f') AND sexo <>('m')then
6 raise_application_error(-20001,'que es esoooooo?');
7 else
8 insert into boleto values (sexo);
9 end if;
10 end "INSERTA_BOLETO";
11 /

Procedimiento creado.

real: 47
sql plus > execute "INSERTA_BOLETO"('m');

Procedimiento PL/SQL terminado con éxito.

real: 31
sql plus > drop table boleto purge;

Tabla borrada.

real: 46
sql plus > drop procedure "INSERTA_BOLETO";

Procedimiento borrado.

real: 156
sql plus >
  #6 (permalink)  
Antiguo 04/05/2009, 08:11
 
Fecha de Ingreso: enero-2009
Mensajes: 178
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: invocar procedimiento en oracle 10g

gracias todo lo q necesitaba saber era esto
begin "INSERTA_BOLETO"('k'); end; ----> el llamado al procedimiento
gracias :*********************
  #7 (permalink)  
Antiguo 04/05/2009, 08:24
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: invocar procedimiento en oracle 10g

No necesitas el BEGIN / END

Si lo tiras desde el plus, con un simple EXEC ó EXECUTE te vale
  #8 (permalink)  
Antiguo 04/05/2009, 16:51
 
Fecha de Ingreso: enero-2009
Mensajes: 178
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: invocar procedimiento en oracle 10g

uso la consola blanca el q esta en la pagina de inicio de oracle 10g
pero ahora no se como hacer la llamada al paquete :(

create or replace package body "mantenimiento" as
procedure validas (sexo varchar2(1)) is
begin
insert into boleto values (sexo);
end validas;
function validash (sexo varchar2(1)) return boolean is
declare
result boolean;
begin
return (result=true);
end validash;
begin
dbms_output.line('el paquete');
end mantenimiento;

begin MANTENIMIENTO.VALIDAS('d'); end;
coloco esto y me da estos errores

ORA-06550: línea 1, columna 7:
PLS-00905: el objeto OLGA.MANTENIMIENTO no es válido
ORA-06550: línea 1, columna 7:
PL/SQL: Statement ignored
  #9 (permalink)  
Antiguo 05/05/2009, 00:21
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: invocar procedimiento en oracle 10g

Aparte de que te falta la especificación y repasar tus apuntes sobre pl-sql, el body tiene que quedarte así :

create or replace package body "mantenimiento" as
procedure validas (sexo IN varchar2) is
begin
insert into boleto values (sexo);
end validas;
function validash (sexo IN varchar2) return boolean is
result boolean;
begin
result := true;
return result;
end validash;
end mantenimiento;
  #10 (permalink)  
Antiguo 05/05/2009, 12:06
 
Fecha de Ingreso: enero-2009
Mensajes: 178
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: invocar procedimiento en oracle 10g

bueno es mi primera vez en pl-sql mucho hago con tratar de entender el codigo porque no tengo apuntes, y si no quieres ayduarme tan sencillo no me escribas. me estoy matando tratando de entender esto en menos de 1 semana con mil cosas encima y de paso para calarme las ironias de un desconocido.para eso esta un foro no? para resolver dudas, y mis dudas son especificas...
  #11 (permalink)  
Antiguo 06/05/2009, 01:10
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: invocar procedimiento en oracle 10g

Mira ¡¡¡
Si encima se ofende. ¿ no quiero ayudarte ?. Estoy perdiendo el tiempo en mi trabajo leyendo tus idioteces, probandolas en la bbdd de mi trabajo para no confundirte, corrigiendotelas y haciendote comentarios para aclarartelo mejor y me saltas con esas.

Pues nada, buscate la vida. Con esos modales y esa educación de la que haces gala, te vas a llevar muchas galletas.

A mi tus 1000 cosas que tienes encima me la soplan. Yo tengo 2000 y encuentro tiempo para entrar en estos foros y echar una mano a la gente, pero con actitudes como la tuya me entran ganas de mandaros al carajo y no volver mas a este foro.

Suerte
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 13:55.