none
procedure sql to oracle RRS feed

  • Pergunta

  • opa galera blz?

    estou migrando alguns scripts sql para oracle, mas não tenho muita experiência com o mesmo. vejam se podem me ajudar.

    proc no sql server

    create procedure [dbo].[Pesquisa]
    (
    	@dataInicial date,
    	@dataFinal date,
    	@numeroNota varchar(25) ,
    	@nomeEmissor varchar(50)
    	
    )
    as
    begin
    SELECT     
    	NR_NF, DT_EMISSAO_NF, CD_CLIENTE, NM_CLIENTE, 
    	CD_UF, NM_EMISSOR_NF, DT_REV, 
    	FL_FECHAMENTO, CD_LOGIN, VL_NF
    FROM         
    	dbo.minhatabela
    where 
    	DT_EMISSAO_NF >= @dataInicial 
    	and DT_EMISSAO_NF <= @dataFinal 
    	and (@numeroNota = '' or NR_NF = @numeroNota) 
    	and (@nomeEmissor = '' or NM_EMISSOR_NF like '%'+@nomeEmissor+'%')
    end

    proc no oracle

    create or replace
    PROCEDURE SP_PESQUISA
    (
           pDataInicial IN date,
           pDataFinal IN date,
           pNumeroNota IN VARCHAR2,
           pNomeEmissor IN VARCHAR2,
           L_CURSOR OUT types.cursorType
    ) 
    IS
    BEGIN
      OPEN L_CURSOR FOR
    SELECT     FRM_NR_NF, FRM_DT_EMISSAO_NF, FRM_CD_CLIENTE, FRM_NM_CLIENTE, FRM_VL_NF, FRM_NM_CIDADE, FRM_CD_UF, FRM_NM_EMISSOR_NF,
                           FRM_DT_REV, FRM_FL_FECHAMENTO, FRM_CD_LOGIN
    FROM         minhatabela
    where 
    	FRM_DT_EMISSAO_NF >= TO_DATE(pDataInicial,'dd/mm/yy') 
    	and FRM_DT_EMISSAO_NF <= TO_DATE(pDataFinal ,'dd/mm/yy')
      and (pNumeroNota = '' or FRM_NR_NF = pNumeroNota) 
    	and (pNomeEmissor = '' or FRM_NM_EMISSOR_NF like '%' || pNomeEmissor || '%')
    ORDER BY FRM_DT_EMISSAO_NF;
    END;

    Os dois últimos "ands" no oracle não funcionam, ou seja, senão envio valor para os parâmetros  pNumeroNota  e pNomeEmissor não retorna dado algum.

    Alguém saberia como ajustar isso.

    Obrigado


    SauSlash Analista/Desenvolvedor Sharepoint 2010

    terça-feira, 22 de maio de 2012 18:37

Respostas

  • Pessoal, segue resolução

    create or replace
    PROCEDURE SP_PESQUISA
    (
           pDataInicial IN VARCHAR2,
           pDataFinal IN VARCHAR2,
           pNumeroNota IN VARCHAR2 default null,
           pNomeEmissor IN VARCHAR2 default null,
           L_CURSOR OUT types.cursorType
    ) 
    IS
    BEGIN
    
          OPEN L_CURSOR FOR
          SELECT     FRM_NR_NF, FRM_DT_EMISSAO_NF, FRM_CD_CLIENTE, FRM_NM_CLIENTE, FRM_VL_NF, FRM_NM_CIDADE, FRM_CD_UF, FRM_NM_EMISSOR_NF,
                                 FRM_DT_REV, FRM_FL_FECHAMENTO, FRM_CD_LOGIN
          FROM         minhatabela
          where
            FRM_DT_EMISSAO_NF >= TO_DATE(pDataInicial,'dd/mm/yy')
            and FRM_DT_EMISSAO_NF <= TO_DATE(pDataFinal ,'dd/mm/yy')
            and (pNumeroNota is null or FRM_NR_NF = pNumeroNota)
            and (pNomeEmissor is null or FRM_NM_EMISSOR_NF like '%' || pNomeEmissor || '%')
    ORDER BY FRM_DT_EMISSAO_NF;
    END;

    abraços


    SauSlash Analista/Desenvolvedor Sharepoint 2010

    • Marcado como Resposta SauSlash terça-feira, 22 de maio de 2012 20:09
    terça-feira, 22 de maio de 2012 20:08