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)
-   -   Como Insertar Datos a una tabla desde Un Sp (https://www.clubdelphi.com/foros/showthread.php?t=85961)

DasGrun 31-05-2014 00:02:04

Como Insertar Datos a una tabla desde Un Sp
 
1 Archivos Adjunto(s)
Hola,

Necesito que Me Ayuden, se ha hecho un Procedimiento Almacenado donde extrae datos, y algunos datos extraido quisiera insertarlos a continuacion el SP que se Ha Creado.
Código SQL [-]
CREATE PROCEDURE SP_EMP_DEPTO_PRY(
  N_DEPTO SMALLINT DEFAULT NULL,
  N_ID_PROYECTO SMALLINT DEFAULT NULL)
RETURNS(
  ID_EMPLEADO BIGINT,
  EMPLEADO VARCHAR(255) CHARACTER SET ISO8859_1,
  PROYECTO VARCHAR(255) CHARACTER SET ISO8859_1,
  IDENTIDAD VARCHAR(15) CHARACTER SET ISO8859_1,
  PUESTO VARCHAR(255) CHARACTER SET ISO8859_1,
  ID_DEPTO SMALLINT,
  DEPARTAMENTO VARCHAR(255) CHARACTER SET ISO8859_1,
  SALARIO NUMERIC(18, 2))
AS
BEGIN
  /* Procedure body */
  FOR
     SELECT
       EMPLEADOS.ID_EMPLEADO,
       EMPLEADOS.NOMBRE || ' ' || EMPLEADOS.APELLIDO AS EMPLEADO,
       PROYECTO.DESCRIPCION,
       EMPLEADOS.IDENTIDAD,
       PUESTO.DESCRIPCION,
       DEPARTAMENTO.ID_DEPTO,
       DEPARTAMENTO.DESCRIPCION,
       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,
         :EMPLEADO,
         :PROYECTO,
         :IDENTIDAD,
         :PUESTO,
         :ID_DEPTO,
         :DEPARTAMENTO,
         :SALARIO
     DO
  BEGIN
    EXECUTE PROCEDURE SP_INSERTAR_EMP_PLANILLA(:ID_EMPLEADO, :SALARIO);
   
  END
END;

Me presenta un error al ejecutar este SP que es el Siguiente.

Invalid Token. Invalid resquet BLR at Offset 75. Procedure SP_Emp_Depto_Pry is not selectable(it does not containt a SUSPEND Statement).

Muchas Gracias Por Su Ayuda.

jhonny 31-05-2014 00:39:00

Seguramente estás listando este procedimiento:

Código SQL [-]
select * from PROCEDURE SP_EMP_DEPTO_PRY(:N_DEPTO, :N_ID_PROYECTO)
...

Y debes es ejecutarlo:

Código SQL [-]
EXECUTE PROCEDURE SP_EMP_DEPTO_PRY(:N_DEPTO, :N_ID_PROYECTO)

DasGrun 31-05-2014 01:50:14

Muchas Gracias por Su repuesta.

Lo Que Hice fue lo Siguiente y me ha funcionado, pero no es lo que necesito hasta el momento porque necesito ingresar otro campo que esta
Código SQL [-]
CREATE PROCEDURE SP_EMP_DEPTO_PRY(
  N_DEPTO SMALLINT DEFAULT NULL,
  N_ID_PROYECTO SMALLINT DEFAULT NULL)
RETURNS(
  ID_EMPLEADO BIGINT,
  SALARIO NUMERIC(18, 2))
AS
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
      INSERT INTO DETALLE_PLANILLA(ID_EMPLEADO, SALARIO)
       VALUES (:ID_EMPLEADO, :SALARIO);
  BEGIN
    SUSPEND;
  END
END;

estoy tratando de insertar otro campo que no esta en est SP...Luego le cuento..

Muchas Gracias.


La franja horaria es GMT +2. Ahora son las 01:36:31.

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