Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tuhajo

[Resolvido] executar função oracle no asp

Recommended Posts

Tenho a seguinte função criada no oracle:

 

CREATE OR REPLACE FUNCTION GEL.F_RETORNA_MVA
 (P_NCM IN NUMBER
 ,P_UF IN VARCHAR2
 ,P_UF_ORIGEM IN VARCHAR2
 ,P_CLASSE IN VARCHAR2
 )
 RETURN NUMBER
 IS
  
   wrk_mva           NUMBER := NULL;
   wrk_cod_ncm  NUMBER;
BEGIN

   -- Se NCM estiver preenchido
   IF( p_ncm IS NOT NULL )
   THEN

      -- Atribui código
      wrk_cod_ncm := p_ncm;

      WHILE( wrk_cod_ncm > 1 )    LOOP

         -- Seleciona margem de acordo com UF e NCM
         BEGIN
            SELECT n.prc_margem
              INTO wrk_mva
              FROM ncm_uf n
             WHERE n.cod_ncm               = wrk_cod_ncm
               AND n.cod_uf                = p_uf
               AND n.cod_uf_origem         = p_uf_origem
               AND n.ind_classe_tributacao = nvl(p_classe,n.ind_classe_tributacao);
           EXCEPTION
               WHEN NO_DATA_FOUND THEN  -- não encontrou, procura com a origem FO
                   begin
                      SELECT n.prc_margem
                           INTO wrk_mva
                        FROM ncm_uf n
                     WHERE n.cod_ncm               = wrk_cod_ncm
                          AND n.cod_uf                = p_uf
                         AND n.cod_uf_origem         = 'FO'
                        AND n.ind_classe_tributacao = nvl(p_classe,n.ind_classe_tributacao);
                  exception
                      WHEN NO_DATA_FOUND THEN
                         wrk_cod_ncm := TO_NUMBER( SUBSTR( wrk_cod_ncm, 1, length(wrk_cod_ncm)-1 ));
                        wrk_mva     := NULL;
                 end ;
         END;

         -- Se encontrou margem
         IF( wrk_mva IS NOT NULL )    THEN
            wrk_cod_ncm := 1; -- para não voltar loop
            RETURN wrk_mva;
         END IF;

      END LOOP;
   END IF;

   -- Se não encontrou, retorna 0
   IF( wrk_mva IS NULL )   THEN
      RETURN -2000;
   END IF;

END;

Preciso executar ela no ASP mas não sei como faço para chamá-la e executar. Alguém pode me ajudar urgente, por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

chama ele como uma stored procedure

 

set objCommP = Server.CreateObject("ADODB.Command")                    
             objCommP.ActiveConnection = OraDB   
             objCommP.CommandType = 4 'adCmdStoredProc   
              objCommP.CommandText = "prc_processa"     
                            set objCommP = objCommP.Execute()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi mas tenho que jogar o resultado dessa função dentro de uma variável.

Como faço isto? Não estou conseguindo de forma nenhuma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

chama ele como uma stored procedure

 

set objCommP = Server.CreateObject("ADODB.Command")                    
             objCommP.ActiveConnection = OraDB   
             objCommP.CommandType = 4 'adCmdStoredProc   
              objCommP.CommandText = "prc_processa"     
                            set objCommP = objCommP.Execute()

 

Só isso não basta, tenho que jogar o resultado dentro de uma variável e não estou conseguindo. Não traz nada. Como faço isto???

Por favor, preciso que me ajudem com urgência.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo


<%

Set param = comm.Parameters
param.append comm.createparameter("Input",3,1)
param.append comm.createparameter("Output",3,2)
'Note that 3 = adInteger tipo de dados
'Note-se que adParamInput = 1 e 2 adParamOutput = parâmetro 
'Passe o valor de entrada
comm("Input") = "...."

Or

Set param = comm.createparameter("InPut",3,1)
Set param = comm.createparameter("OutPut",3,2)
comm.parameters.append param
'Passe o valor de InPut
comm("Input") = "...."

'Execute depois de definir os parâmetros
comm.execute()

Out_1 = comm("Output")
'e assim por diante ...

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo


<%

Set param = comm.Parameters
param.append comm.createparameter("Input",3,1)
param.append comm.createparameter("Output",3,2)
'Note that 3 = adInteger tipo de dados
'Note-se que adParamInput = 1 e 2 adParamOutput = parâmetro 
'Passe o valor de entrada
comm("Input") = "...."

Or

Set param = comm.createparameter("InPut",3,1)
Set param = comm.createparameter("OutPut",3,2)
comm.parameters.append param
'Passe o valor de InPut
comm("Input") = "...."

'Execute depois de definir os parâmetros
comm.execute()

Out_1 = comm("Output")
'e assim por diante ...

%>

 

Desculpe a ignorância mas estou um pouco perdida pois é a primeira vez que to trabalhando com oracle e principalmente tendo que chamar função pelo ASP.

No caso que citei acima, eu tenho 4 parâmetros, todos de entrada, 1 deles é int e os outros são varchar.

No exemplo que me passou diz que o 3 indica o tipo de dados. Teria como você dar o exmplo pelo menos com 1 parametro que citei no meu exemplo da função??? Obrigada mais uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

olha este exemplo


<%

Set param = comm.Parameters
param.append comm.createparameter("Input",3,1)
param.append comm.createparameter("Output",3,2)
'Note that 3 = adInteger tipo de dados
'Note-se que adParamInput = 1 e 2 adParamOutput = parâmetro 
'Passe o valor de entrada
comm("Input") = "...."

Or

Set param = comm.createparameter("InPut",3,1)
Set param = comm.createparameter("OutPut",3,2)
comm.parameters.append param
'Passe o valor de InPut
comm("Input") = "...."

'Execute depois de definir os parâmetros
comm.execute()

Out_1 = comm("Output")
'e assim por diante ...

%>

 

Desculpe a ignorância mas estou um pouco perdida pois é a primeira vez que to trabalhando com oracle e principalmente tendo que chamar função pelo ASP.

No caso que citei acima, eu tenho 4 parâmetros, todos de entrada, 1 deles é int e os outros são varchar.

No exemplo que me passou diz que o 3 indica o tipo de dados. Teria como você dar o exmplo pelo menos com 1 parametro que citei no meu exemplo da função??? Obrigada mais uma vez.

 

 

 

Desculpe a ignorância mas estou um pouco perdida pois é a primeira vez que to trabalhando com oracle e principalmente tendo que chamar função pelo ASP.

No caso que citei acima, eu tenho 4 parâmetros, todos de entrada, 1 deles é int e os outros são varchar.

No exemplo que me passou diz que o 3 indica o tipo de dados. Teria como você dar o exemplo pelo menos com 1 parametro que citei no meu exemplo da função??? Obrigada mais uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

no oracle é um pouco diferente

 

sql = "SELECT GEL.F_RETORNA_MVA (P_NCM ,P_UF,P_UF_ORIGEM,P_CLASSE) AS RETORNO FROM DUAL "
Set rs = conexao.execute(sql)
response.write rs("RETORNO")
não esqueça de trocar os parametros "P_NCM ,P_UF,P_UF_ORIGEM,P_CLASSE" pelos valores necessários, colocando apóstrofo entre as strings

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa implementar ele no db

 

Set param = comm.createparameter("InPut",3,1)
Set param = comm.createparameter("OutPut",3,2)
comm.parameters.append param
'Passe o valor de InPutcomm("Input") = "...."
'Execute depois de definir os parâmetros
comm.execute()Out_1 = comm("Output")
'e assim por diante ...%>

link

Compartilhar este post


Link para o post
Compartilhar em outros sites

no oracle é um pouco diferente

 

sql = "SELECT GEL.F_RETORNA_MVA (P_NCM ,P_UF,P_UF_ORIGEM,P_CLASSE) AS RETORNO FROM DUAL "
Set rs = conexao.execute(sql)
response.write rs("RETORNO")
não esqueça de trocar os parametros "P_NCM ,P_UF,P_UF_ORIGEM,P_CLASSE" pelos valores necessários, colocando apóstrofo entre as strings

 

 

Bom dia Jonathan!!!

 

Muito obrigado pela ajuda mas já tentei fazer dessa forma no asp e não retorna nada. Quando rodo no PL/SQL, ele traz o valor.

Já tentei de várias formas chamar essa função no asp e retornar o valor mas não obtive sucesso. Não sei mais como fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como está a string de conexão?

tem como postar a forma que está chamando no asp, inclusive com os parametros?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no oracle é um pouco diferente

 

sql = "SELECT GEL.F_RETORNA_MVA (P_NCM ,P_UF,P_UF_ORIGEM,P_CLASSE) AS RETORNO FROM DUAL "
Set rs = conexao.execute(sql)
response.write rs("RETORNO")
não esqueça de trocar os parametros "P_NCM ,P_UF,P_UF_ORIGEM,P_CLASSE" pelos valores necessários, colocando apóstrofo entre as strings

 

 

Oi Jonathan!!! CONSEGUI!!!

Estava faltando apóstrofe em uma variável!!!

OBRIGADO PELA AJUDA!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.