Ver Mensaje Individual
  #18  
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.043
Reputación: 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