Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Insertar datos desde un SP (https://www.clubdelphi.com/foros/showthread.php?t=85982)

DasGrun 03-06-2014 00:07:54

Insertar datos desde un SP
 
Hola Nuevamente,

Tengo dos Tablas Maestro, detalle. donde Maestro se ejecuta un SP lo que hace es insertar datos a la tabla De detalle, se hace por este SP.
Código SQL [-]
CREATE PROCEDURE SP_EMP_DEPTO_PRY(
  N_DEPTO SMALLINT DEFAULT NULL,
  N_ID_PROYECTO SMALLINT DEFAULT NULL)
AS
DECLARE VARIABLE ID_EMPLEADO BIGINT;
DECLARE VARIABLE SALARIO NUMERIC(18, 2);
BEGIN
  /* Procedure body */
FOR
     SELECT
       EMPLEADOS.ID_EMPLEADO,
       EMPLEADOS.SALARIO
                        FROM
                          EMPLEADOS
      INNER JOIN PUESTO ON (EMPLEADOS.ID_PUESTO = PUESTO.ID_PUESTO)
      INNER JOIN DEPARTAMENTO ON (PUESTO.ID_DEPTO = DEPARTAMENTO.ID_DEPTO)
      INNER JOIN PROYECTO ON (EMPLEADOS.ID_PROYECTO = PROYECTO.ID_PROYECTO)
            WHERE
              DEPARTAMENTO.ID_DEPTO = :N_DEPTO AND
              EMPLEADOS.ID_PROYECTO = :N_ID_PROYECTO

     INTO
         :ID_EMPLEADO,
         :SALARIO
      DO
 EXECUTE PROCEDURE SP_INSERTAR_EMP_PLANILLA(:ID_EMPLEADO, :SALARIO);
 
    BEGIN
    SUSPEND;
  END
END;

y aqui esta la Inserccion de los datos por medio de otro SP.

Código SQL [-]
CREATE PROCEDURE SP_INSERTAR_EMP_PLANILLA(
  ID_EMPLEADO BIGINT DEFAULT NULL,
  SALARIO NUMERIC(18, 2) DEFAULT NULL,
  ID_PLANILLA BIGINT DEFAULT NULL)
AS
DECLARE VARIABLE CANT_25 NUMERIC(18, 2);
DECLARE VARIABLE CANT_50 NUMERIC(18, 2);
DECLARE VARIABLE CANT_75 NUMERIC(18, 2);
DECLARE VARIABLE CANT_100 NUMERIC(18, 2);
BEGIN
  /* Procedure body */
    INSERT INTO DETALLE_PLANILLA(ID_PLANILLA,ID_EMPLEADO, CANT_25, CANT_50, CANT_75, CANT_100, SALARIO)
       VALUES (:ID_PLANILLA, :ID_EMPLEADO, 0.00, 0.00, 0.00, 0.00, :SALARIO);
 END;

Me Inserta los Datos Correctamente en la Tabla de Detalle, Mi Consulta es:
  • Como inserto Un Campo que no esta relacionado con el SP.
  • Como inserto el Campo de Primary Key de la Tabla Maestro a la tabla Detalle.

Muchas Gracias.

duilioisola 04-06-2014 11:08:59

No se entiende lo que preguntas

•Como inserto Un Campo que no esta relacionado con el SP.
¿Quieres agregar un campo a la tabla o rellenar un campo de la tabla en un insert?
¿De dónde sale la información para ese campo?
¿De qué campo se trata?
¿Es parte de alguna de las tablas que mencionas?
En los procedimientos tienes unas variables, con ellas buscas datos y los insertas en tablas. Las variables no están en las tablas, por lo que no entiendo qué es lo que preguntas.

La respuesta que se me ocurre es que lo agregues a los campos en el INSERT.
INSERT INO MAESTRO (A, B, C, CampoNoRelacionado) VALUES (1, 2, 3, 'Otro Valor');


•Como inserto el Campo de Primary Key de la Tabla Maestro a la tabla Detalle.
Supongo que ID_EMPLEADO es el campo PK de la tabla MAESTRO.
Supongo que la tabla detalle es DETALLE_PLANILLA.
Por lo que veo le pasas al procedimiento SP_INSERTAR_EMP_PLANILLA esta información y luego haces el insert.
Por esto no entiendo la pregunta.

DasGrun 07-06-2014 17:50:08

Muchas Gracias estimado por Su Repuesta.

•Como inserto Un Campo que no esta relacionado con el SP. Lo Explico.
Tengo dos tablas que son Maestro-Detalle.
* se quiere insertar Campos en la tabla de Detalle Del Resultado que presente el SP.
* EL SP SP_EMP_DEPTO_PRY Lo Que Hace es Que presenta Resultados siempre y cuando se cumpla los dos Parametros
WHERE
DEPARTAMENTO.ID_DEPTO = :N_DEPTO AND
EMPLEADOS.ID_PROYECTO = :N_ID_PROYECTO

* El resultado de los Campos son:
INTO
:ID_EMPLEADO,
:SALARIO


Estos Resultados son Insertado a la tabla de Detalle por medio del SP_INSERTAR_EMP_PLANILLA
* Que Campo Son Insertado ID_EMPLEADO y SALARIO.

Hasta aquí el SP hace un Buen Trabajo.

En la tabla de Maestro - Detalle hay un Campo llamada ID_Planilla que es el campo que se relaciona estas dos tablas. Necesito Insertar este campo PK de la Tabla Maestro a la Tabla de Detalle por cada Registro Insertado del SP_INSERTAR_EMP_PLANILLA.

Muchas Gracias.


La franja horaria es GMT +2. Ahora son las 13:52:20.

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