aprender a montar uma stored procedure

19/06/2004

amigos, gostaria q alguém me ajudasse a aprender como montar uma stored procedure, ou mesmo, se alguém tivesse conteúdo desde inicial ao avançado sobre o assunto, ficarei grato.

Ah! já ia esquecendo e como fazer para passar os parâmetros da stored procedure via programação (delphi).

Valeu!!

Thiago
universodosoftware@hotmail.com


Universodosoftware

Respostas

04/07/2004

Fer_nanda

Aqui vc encontra bastante material http://www.sqlmagazine.com.br/apostilas.asp

Mas pra te adiantar alguma coisa está aqui um exemplo. Ela é um pouco grande.. qualquer dúvida é só perguntar.

create Procedure stpEmbarqueInvoice @wsEmbCodigo Numeric --parametro q ela receberá pelo delphi As Declare @QtdTotalEmbarcada float, --variaveis criadas para uso alocal @VlrTotalInvoice float, @wsTipoContrato numeric Select @QtdTotalEmbarcada = (Select Sum(EitQtdEmbarcada) From EmbarqueItem Where EmbCodigo = @wsEmbCodigo) Select @wsTipoContrato = (Select Top 1 Cit.TcoCodigo From Embarque Emb, EmbarqueItem Eit, ContratoItem Cit Where Cit.CtrCodigo = Emb.CtrCodigo and Eit.EmbCodigo = Emb.EmbCodigo and Eit.IcoCodigo = Cit.IcoCodigo and Emb.EmbCodigo = @wsEmbCodigo) if @wsTipoContrato = 1 -- COMPRA begin Select Imp.ImpNome ´ImpNome´, Imp.ImpEndereco ´ImpEndereco´, Imp.ImpCidade ´ImpCidade´, Imp.ImpPais ´ImpPais´, Imp.ImpNome ´TituloRel´, RTrim(Imp.ImpEndereco) + ´ - ´ + RTrim(Imp.ImpBairro) + ´ - ´ + RTrim(Imp.ImpCidade) + ´ - ´ + RTrim(Imp.ImpUF) ´SubTituloRel´, Imp.ImpConta ´Acount´, Imp.ImpNomeBanco ´BankNameCustomer´, Imp.ImpBtwVatNr ´BtwVatNrBuyer´, Imp.ImpDadoBancario ´ImpDadoBancario´, Ntf.ImpNome ´NtfNome´, Ntf.ImpEndereco ´NtfEndereco´, Ntf.ImpCidade ´NtfCidade´, Ntf.ImpPais ´NtfPais´, Ctr.CtrPortoEmbarque ´PortoEmbarque´, Ctr.CtrPortoDestino ´PortoDestino´, Ctr.CtrNumero ´NumeroContrato´, Ctr.CtrMarcaFardo ´MarcaFardo´, Fpg.FpgDescricao ´FormaPagamento´, Nav.NavNome ´Navio´, Rse.RseDtEmbarque ´DataEmbarque´, Cem.CemNome ´Embarcador´, -- @QtdTotalEmbarcada ´QtdTotalEmbarcada´, Rse.InvCodigo ´NumeroInvoice´, Emb.EmbPeso ´Peso´, Emb.EmbQtdFardo ´QtdFardo´, -- Ind.IndDescricao ´DescricaoInvoice´, Emb.EmbDescricaoInvoice ´DescricaoInvoice´, EmbTotalInvoice ´VlrTotalInvoice´, Emb.EmbNumBl ´Bl´, Emb.EmbRefComprador ´Buyer´, Emb.EmbPaisOrigemProduto ´CountryOrigin´, Emb.EmbPaisEmissaoInvoice ´CountryProvenance´, Tar.TarNumero ´CustonsTarif´, Emb.EmbObservacao ´AditionalConditions´, Emb.EmbDtPrevChegada ´DtPrevChegada´, Tpa.TpaDescricao ´CondicaoPagamento´ from Embarque Emb, Importador Imp, Importador Ntf, Contrato Ctr, Reserva Rse, Navio Nav, FormaPagamento Fpg, CompanhiaEmbarcadora Cem, InvoiceDado Ind, TipoPagamento Tpa, Tarifa Tar, Exportador Ept Where Emb.CtrCodigo = Ctr.CtrCodigo and Emb.ImpCodigo = Ntf.ImpCodigo and Ctr.ImpCodigo = Imp.ImpCodigo and Ctr.FpgCodigo = Fpg.FpgCodigo and Ctr.IndCodigo = Ind.IndCodigo and Ctr.TpaCodigo = Tpa.TpaCodigo and Emb.RseCodigo = Rse.RseCodigo and Rse.NavCodigo = Nav.NavCodigo and Rse.CemCodigo = Cem.CemCodigo and Emb.TarCodigo = Tar.TarCodigo and Emb.ExpCodigo = Ept.ExpCodigo and Emb.EmbCodigo = @wsEmbCodigo end if @wsTipoContrato = 3 -- VENDA begin Select Imp.ImpNome ´ImpNome´, Imp.ImpEndereco ´ImpEndereco´, Imp.ImpCidade ´ImpCidade´, Imp.ImpPais ´ImpPais´, Ept.ExpNome ´TituloRel´, RTrim(Ept.ExpEndereco) + ´ - ´ + RTrim(Ept.ExpBairro) + ´ - ´ + RTrim(Ept.ExpCidade) + ´ - ´ + RTrim(Ept.ExpUF) ´SubTituloRel´, Imp.ImpConta ´Acount´, Imp.ImpNomeBanco ´BankNameCustomer´, Imp.ImpBtwVatNr ´BtwVatNrBuyer´, Imp.ImpDadoBancario ´ImpDadoBancario´, Ntf.ImpNome ´NtfNome´, Ntf.ImpEndereco ´NtfEndereco´, Ntf.ImpCidade ´NtfCidade´, Ntf.ImpPais ´NtfPais´, Ctr.CtrPortoEmbarque ´PortoEmbarque´, Ctr.CtrPortoDestino ´PortoDestino´, Ctr.CtrNumero ´NumeroContrato´, Ctr.CtrMarcaFardo ´MarcaFardo´, Fpg.FpgDescricao ´FormaPagamento´, Nav.NavNome ´Navio´, Rse.RseDtEmbarque ´DataEmbarque´, Cem.CemNome ´Embarcador´, @QtdTotalEmbarcada ´QtdTotalEmbarcada´, Rse.InvCodigo ´NumeroInvoice´, Emb.EmbPeso ´Peso´, Emb.EmbQtdFardo ´QtdFardo´, -- Ind.IndDescricao ´DescricaoInvoice´, Emb.EmbDescricaoInvoice ´DescricaoInvoice´, EmbTotalInvoice ´VlrTotalInvoice´, Emb.EmbNumBl ´Bl´, Emb.EmbRefComprador ´Buyer´, Emb.EmbPaisOrigemProduto ´CountryOrigin´, Emb.EmbPaisEmissaoInvoice ´CountryProvenance´, Tar.TarNumero ´CustonsTarif´, Emb.EmbObservacao ´AditionalConditions´, Emb.EmbDtPrevChegada ´DtPrevChegada´, Tpa.TpaDescricao ´CondicaoPagamento´ from Embarque Emb, Importador Imp, Importador Ntf, Contrato Ctr, Reserva Rse, Navio Nav, FormaPagamento Fpg, CompanhiaEmbarcadora Cem, InvoiceDado Ind, TipoPagamento Tpa, Tarifa Tar, Exportador Ept Where Emb.CtrCodigo = Ctr.CtrCodigo and Emb.ImpCodigo = Ntf.ImpCodigo and Ctr.ImpCodigo = Imp.ImpCodigo and Ctr.FpgCodigo = Fpg.FpgCodigo and Ctr.IndCodigo = Ind.IndCodigo and Ctr.TpaCodigo = Tpa.TpaCodigo and Emb.RseCodigo = Rse.RseCodigo and Rse.NavCodigo = Nav.NavCodigo and Rse.CemCodigo = Cem.CemCodigo and Emb.TarCodigo = Tar.TarCodigo and Emb.ExpCodigo = Ept.ExpCodigo and Emb.EmbCodigo = @wsEmbCodigo end


O Parametro no delphi é simples. Se stiver usando ADOStoredProc (exemplo) vc só seta a conexão e em procedurename coloca o nome da stored procedure, define o parâmetro e para passar é como se fosse passar parametro para uma qry... mais ou menos assim:
  storedproc1.close;
  storedproc1.parameters.parambyname(´@wsEmbCodigo´).value := edtembcodigo.value;
  storedproc1.open; // ou execproc dependendo da necessidade.

Espero ter ajudado


Responder Citar