Quantcast
Channel: SQL Server Integration Services forum
Viewing all articles
Browse latest Browse all 24688

Execute stored procedure in Oracle with SQL Task

$
0
0

Hi everybody.

I'm using SQL Task to execute a stored procedure in Oracle database, but i'm getting the following error.

SSIS package "Package.dtsx" starting.
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 replace
PROCEDURE 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


Viewing all articles
Browse latest Browse all 24688

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>