Desenvolvimento - ASP

Chamando Stored Procedures do ASP

Demonstraremos neste artigo como realizar a chamada de uma stored procedure do Oracle a partir do ASP.

por Equipe Linha de Código



Em aplicações web de médio e grande porte, uma situação muito comum é a existência de stored procedures em bancos de dados que devem ser chamadas pelos scripts das páginas. Demonstraremos neste artigo como realizar a chamada de uma stored procedure do Oracle a partir do ASP. Antes vamos dar uma breve revisada no que são stored procedures:

Store Procedures

Stored procedures são programas SQL escritos por um programador e que são armazenados no servidor de banco de dados e podem ser invocados por aplicações clientes.

As principais motivações para a construção de stored procedures são: modularização de funcionalidades que mais de uma aplicação cliente necessitaria facilitando o reaproveitamento de código, separação de regra de negócio da aplicação cliente, concentração de lógica de manipulação de dados no banco de dados.

Atualmente, com o crescimento dos servidores de aplicações a tendência é que a programação de regra de negócio seja retirada de stored procedures e colocadas em componentes de negócio nesses servidores. Em stored procedures ficariam apenas programas que específicos para manipulação de dados como migrações entre bases.

Uma stored procedure pode ser escrita em diferentes linguagens, tais como COBOL, C, C++, PL/SQL, FORTRAN, Assembly e Java, dependendo apenas do suporte a linguagens que o servidor de banco de dados oferece.

Oracle

Vamos apresentar duas situações: uma procedure comum e uma function.

Na function o resultado é enviado para o chamador como um retorno da função.
create or replace function soma_fcn( p1 number, p2 number ) return number
IS
   v_valor number := null;
begin

    v_valor := p1 + p2;
    
    return v_valor;

end soma_fcn;
Na procedure o retorno é enviado de volta através de um dos 
parâmetros de entrada da procedure. 
create or replace procedure soma_prc( p1 in number, p2 in number, ret out number ) 
IS
   v_valor number := null;
begin

    v_valor := p1 + p2;
    
    ret := v_valor ;

end soma_prc;
O código em ASP para chamar a procedure seria: 
set objCommand = Server.CreateObject("ADODB.Command")

objCommand.ActiveConnection = v_conexao
objCommand.CommandText = "soma_prc"
objCommand.CommandType = adCmdStoredProc
 
"*** Carregando parâmetros de entrada
 Set objParam = objCommand.CreateParameter("p1", adNumeric, adParamInput, 15, Request("valor1"))
objCommand.Parameters.Append objParam
 
Set objParam = objCommand.CreateParameter("p1", adNumeric, adParamInput, 15, Request("valor2"))
objCommand.Parameters.Append objParam
 
 "*** Configurando variável que receberá o retorno
Set objParam = objCommand.CreateParameter("nRet", adNumeric, adParamOutput)
objCommand.Parameters.Append objParam
 
"*** Executando a stored procedure
objCommand.Execute
 
Response.Write "O resultado da stored procedure é " & objCommand("nRet")
O código em ASP para chamar a function seria: 
Set objCommand = Server.CreateObject("ADODB.Command")
objCommand.ActiveConnection = v_conexao
objCommand.CommandText = "soma_fcn"
objCommand.CommandType = adCmdStoredProc

Set objParam = objCommand.CreateParameter("pRet", adNumeric, adParamReturnValue)
objCommand.Parameters.Append objParam
Set objParam = objCommand.CreateParameter("p1", adNumeric, adParamInput, , Request("valor1"))
objCommand.Parameters.Append objParam
Set objParam = objCommand.CreateParameter("p2", adNumeric, adParamInput, , Request("valor2"))
objCommand.Parameters.Append objParam

objCommand("pRet") = null
objCommand.Execute

Response.Write "O resultado da function é " & objCommand("pRet")
Este exemplo ilustrou a chamada de uma procedure Oracle a partir do 
ASP, mas também é válida para SQL Server.
Equipe Linha de Código

Equipe Linha de Código