PDA

Ver la Versión Completa : Como Insertar Datos a una tabla desde Un Sp


DasGrun
31-05-2014, 00:02:04
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.

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:

select * from PROCEDURE SP_EMP_DEPTO_PRY(:N_DEPTO, :N_ID_PROYECTO)...

Y debes es ejecutarlo:

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

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.