Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-10-2012
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Cita:
Casimiro Notevi:

Y si ejecutas "a mano" este insert, con el valor '1', tal y como dices, ¿qué resultado obtienes?
Realiza el Insert en la Tabla TADJUNTOSEMPL...
Responder Con Cita
  #2  
Antiguo 27-10-2012
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
En realidad ya habia hecho un scrip realizando la consulta y luego haciendo el insert todo me salio bien por eso quise realizar el procedimiento almacenado ya que por lo general siempre voy a tener que realizar la consulta de empleado para agregar datos a diferentes tablas pero siempre necesitare ese id del empleado.

saludos

pd: e aqui el link cuando realice la consulta http://www.clubdelphi.com/foros/showthread.php?t=81195
Responder Con Cita
  #3  
Antiguo 27-10-2012
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Vuelvo a empezar a ver en que parte me estoy equivocando:

Este es mi procedimiento de Consulta:

Código SQL [-]
SET TERM ^ ;

CREATE PROCEDURE CONSULTACEDULA(
  CEDULA VARCHAR(20) CHARACTER SET NONE COLLATE NONE)
RETURNS(
  ID INTEGER)
AS
BEGIN
  /* Procedure body */
  SELECT ID_EMPLEADOS FROM TEMPLEADOS WHERE CEDULA_EMPL =:CEDULA INTO :ID;
  suspend;
END^

SET TERM ; ^

No hay problema ya que si funciona correctamente

ahora hago prueba haciendo esto:
Código SQL [-]
 EXECUTE procedure CONSULTACEDULA(:Cedula)
y lo hace me devuelve mi id;

ahora el procedimiento para llamar a consulta y realizar insercion:

Código SQL [-]
CREATE PROCEDURE ADJUNTO(
  ID_EMPL INTEGER,
  HOJADVIDA CHAR(1) CHARACTER SET NONE COLLATE NONE,
  FOTO CHAR(1) CHARACTER SET NONE COLLATE NONE,
  CED CHAR(1) CHARACTER SET NONE COLLATE NONE,
  TITULOS CHAR(1) CHARACTER SET NONE COLLATE NONE,
  REFERENCIAS CHAR(1) CHARACTER SET NONE COLLATE NONE,
  RP CHAR(1) CHARACTER SET NONE COLLATE NONE,
  EXAM CHAR(1) CHARACTER SET NONE COLLATE NONE)
  RETURNING_VALUES ID_CEDULA INTEGER
AS
DECLARE VARIABLE CEDULA VARCHAR(20);
DECLARE VARIABLE ID INTEGER;
BEGIN
EXECUTE procedure CONSULTACEDULA(:Cedula) RETURNING_VALUES ID;
INSERT INTO TADJUNTOSEMPL (ID_EMPLEADOS,HOJADEVIDA,FOTOCARNET,COPIACED,
                           COPIATITULOS,REFERENCIAS,RECORDPOLICIACO,EXAMEMBARAZO)
  VALUES (:ID,:HOJADVIDA,:FOTO,:CEDULA,:TITULOS,:REFERENCIAS,:RP,:EXAM);
  SUSPEND;
END^

es aqui donde no se que pasa ya que en el primer parametro me pone

1 parametro: ID_EMPL =
2 Parametro: HOJADVIDA =
3 Parametro: FOTO =
4 Parametro: CED =
5 Parametro: TITULOS =
6 Parametro: REFERENCIAS =
7 Parametro: RP =
8 Parametro: EXAM =

En fin no me hace el Excecute para devolver el valor y ponerlo en el primer parametro que es id_empl
Responder Con Cita
  #4  
Antiguo 27-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por novato_erick Ver Mensaje
es aqui donde no se que pasa ya que en el primer parametro me pone

1 parametro: ID_EMPL =
2 Parametro: HOJADVIDA =
3 Parametro: FOTO =
4 Parametro: CED =
5 Parametro: TITULOS =
6 Parametro: REFERENCIAS =
7 Parametro: RP =
8 Parametro: EXAM =

En fin no me hace el Excecute para devolver el valor y ponerlo en el primer parametro que es id_empl
No entiendo qué quieres decir
Responder Con Cita
  #5  
Antiguo 27-10-2012
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Cita:
Casimiro
No entiendo qué quieres decir
Tengo ya los parámetros de entrada en esta parte:

Código SQL [-]
CREATE PROCEDURE ADJUNTO(
  ID_EMPL INTEGER,
  HOJADVIDA CHAR(1) CHARACTER SET NONE COLLATE NONE,
  FOTO CHAR(1) CHARACTER SET NONE COLLATE NONE,
  CED CHAR(1) CHARACTER SET NONE COLLATE NONE,
  TITULOS CHAR(1) CHARACTER SET NONE COLLATE NONE,
  REFERENCIAS CHAR(1) CHARACTER SET NONE COLLATE NONE,
  RP CHAR(1) CHARACTER SET NONE COLLATE NONE,
  EXAM CHAR(1) CHARACTER SET NONE COLLATE NONE)
  RETURNING_VALUES ID_CEDULA INTEGER

y entiendo que cuando ejecuto el excecute el id debe de traerlo retornado... pero no sucede eso...
Responder Con Cita
  #6  
Antiguo 27-10-2012
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Creo que me estoy metiendo en camisa de once varas...
Responder Con Cita
  #7  
Antiguo 27-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Veamos, he hecho un ejemplo muy, muy simple:

Tengo un par de tablas:

Código SQL [-]
CREATE TABLE EJEMPLO(
  ID ENTERO DEFAULT 0 NOT NULL,
  VALUE1 ENTERO DEFAULT 0 NOT NULL,
  VALUE2 ENTERO DEFAULT 0 NOT NULL,
  PEPITO Integer,
  OTRO Varchar(18384),
  MASGRANDE Varchar(32000),
  CONSTRAINT PK_EJEMPLO PRIMARY KEY (ID)
);

CREATE TABLE EJEMPLO2(
  ID ENTERO DEFAULT 0 NOT NULL,
  VALUE1 ENTERO DEFAULT 0 NOT NULL,
  VALUE2 ENTERO DEFAULT 0 NOT NULL,
  PRIMARY KEY (ID)
);

Creo un par de stored procedure, uno llama al otro, retorna un valor y es usado para insertar en otra tabla

Código SQL [-]
CREATE PROCEDURE AA1 ( VALOR Integer )
RETURNS ( DEVOLVER Integer )
AS
BEGIN
  select id 
  from ejemplo
  where value1= :valor
  into :devolver;
END^

Código SQL [-]
CREATE PROCEDURE BB1
AS
DECLARE VARIABLE valor integer; 
BEGIN
  execute procedure aa1 (5) RETURNING_VALUES valor;
  insert into ejemplo2 values (:valor, 10,10 );
END^

Como ves, el procedure BB1 llama al procedure AA1 con el parámetro '5' y devuelve el campo ID de la otra tabla

La tabla ejemplo tiene el registro:
id 1
value1 5
etc.


Ejecuto el mismo;
Código SQL [-]
execute procedure BB1

Y si miro la tabla ejemplo2 tiene el registro insertado con el valor correspondiente, id=1
Responder Con Cita
  #8  
Antiguo 27-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por novato_erick Ver Mensaje
y entiendo que cuando ejecuto el excecute el id debe de traerlo retornado... pero no sucede eso...
Pero si antes has dicho que sí devuelve el valor, que lo has comprobado
Responder Con Cita
  #9  
Antiguo 27-10-2012
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Cita:
execute procedure aa1 (5) RETURNING_VALUES valor;
El 5 es el valor ya en la tabla el problema esta es cuando pongo

Código SQL [-]
execute procedure aa1 (:num) RETURNING_VALUES valor;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Llamar un procedimiento desde otro martini002 Varios 2 02-06-2012 05:58:12
condicionar un procedimiento dentro de otro procedimiento yossi Varios 7 17-05-2010 10:47:14
procedimiento dentro de procedimiento chechu Varios 6 24-11-2005 23:34:48
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 04:05:35
llamar procedimiento cmgenny Varios 2 12-08-2003 00:28:13


La franja horaria es GMT +2. Ahora son las 19:08:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi