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ódigoEm 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.
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.