Hi everybody.
I'm using SQL Task to execute a stored procedure in Oracle database, but i'm getting the following error.
Warning: 0x0 at Popula DIM_TEMPO: Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
Warning: 0x0 at Popula DIM_TEMPO: Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
Error: 0xC002F210 at Popula DIM_TEMPO, Execute SQL Task: Executing the query "EXEC INSERT_TABELA_TEMPO_V2;
" failed with the following error: "ORA-00900: invalid SQL statement". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Task failed: Popula DIM_TEMPO
SSIS package "Package.dtsx" finished: Success.
The SQL Statement in the SQL Task is: EXEC DBO.INSERT_TABELA_TEMPO_V2;
The Connection is: OLE DB - Oracle Provider for OLE DB
Version of SQL Server is: SQL Server 2008 R2
The procedure is:
create or replacePROCEDURE INSERT_TABELA_TEMPO_V2
IS
--A data de inicio foi estabelecida em relação a consulta realizada na tabela FATO_SD_PROC_BENEFICIARIO
DT_INICIO_REF DATE := '01/01/1978';
--A data fim foi reaproveitada de acordo com a maior data populada na antiga proc da DIM_TEMPO
DT_FIM_REF DATE := '01/12/2030';
ID_TEMPO NUMBER := 1;
COD_MES NUMBER;
DES_MES VARCHAR2(15);
DES_MES_ABREVIADO VARCHAR2(15);
ANO NUMBER;
BEGIN
--Loop para percorrer todas as datas no intervalo de DT_INICIO_REF e DT_FIM_REF
WHILE DT_INICIO_REF <= DT_FIM_REF
LOOP
SELECT TO_NUMBER(TO_CHAR(DT_INICIO_REF,'MM')) INTO COD_MES FROM DUAL;
SELECT TO_CHAR(DT_INICIO_REF,'MONTH') INTO DES_MES FROM DUAL;
SELECT TO_CHAR(DT_INICIO_REF,'MON') INTO DES_MES_ABREVIADO FROM DUAL;
SELECT TO_NUMBER(TO_CHAR(DT_INICIO_REF,'YYYY')) INTO ANO FROM DUAL;
INSERT INTO DIM_TEMPO VALUES(ID_TEMPO,COD_MES,DES_MES,DES_MES_ABREVIADO,ANO);
ID_TEMPO := ID_TEMPO + 1;
SELECT ADD_MONTHS(DT_INICIO_REF,1) INTO DT_INICIO_REF FROM DUAL;
END LOOP;
COMMIT;
END;
When i execute the procedure without a loop it works fine.
Could anybody help me?
Rafael R