sp de Seleção

Home Acima Avançar
Nesta página irei mostrar alguns exemplos de como utilizar Stored Procedure do SQL Server  no Delphi. Stored Procedure são blocos de comandos SQL que ficam compilados no Banco de Dados. Portanto quando alguma Stored Procedure é requisitada pela aplicação, pelo fato dela já estar compilada,  ela tem uma resposta mais rápida do que se o mesmo comando fosse executado na máquina cliente. Outra vantagem do uso de Stored Procedure é que a máquina servidora tem um performance melhor que a maioria das máquinas clientes, portanto comandos que afetam grande quantidades de linhas são mais eficientes quando executados no Servidor.
  1. Stored Procedure de Seleção
  2. Stored Procedure com parâmetros
  3. Stored Procedure com parâmetros default
  4. Stored Procedure com parâmetro OUTPUT

Stored Procedure de Seleção

Esta é uma sp de seleção, ela retorna o nome do autor, o sobrenome do autor, o título do livro e o nome da editora, para usá-la no Delphi, você deverá colocar em um Form ou DataModule o componente StoredProcedure que está na aba Data Access da Paleta de componentes do Delphi. Escolha o alias do banco de dados pubs do SQLServer, depois de criar a Stored Procedure no Banco de Dados, escolha o nome da Stored Procedure na propriedade StoredProcName. Feito isto você poderá abri-lá e fechá-la usando o comando StoredPoc1.Open e StoredProc1.Close respectivamente se for uma sp de Seleção ou StoredProc1.ExecProc se for uma Stored Procedure de inclusão, alteração ou exclusão.  Você também poderá utilizar em conjunto com Stored Procedures de seleção o componente UpdateSQL. Breve colocarei nesta Seção uma demonstração de como utilizar este componente no Delphi. Então vamos ao exemplo da Strored Procedure de Seleção:

CREATE PROCEDURE au_info_all
AS
    SELECT au_lname, au_fname, title, pub_name
    FROM authors a, titles t, publishers p, titleauthor ta
    WHERE a.au_id = ta.au_id
    AND t.title_id = ta.title_id
    AND t.pub_id = p.pub_id

Ir para o Topo

Stored Procedure com parâmetros

Esta Stored Procedure retorna o nome do autor, seus livros, e a editora que publicou o livro usando um "join" entre quatro tabelas. Esta sp recebe dois parâmetros, o nome e o sobre nome do autor, portanto só irá retornar os livros do autor recebido pelos parâmetros.

CREATE PROCEDURE au_info 
    @lastname varchar(40), 
    @firstname varchar(20) 
AS 
    SELECT au_lname, au_fname, title, pub_name
    FROM authors, titles, publishers, titleauthor
    WHERE au_fname = @firstname
    AND au_lname = @lastname
    AND authors.au_id = titleauthor.au_id
    AND titles.title_id = titleauthor.title_id
    AND titles.pub_id = publishers.pub_id


Para executar esta sp no Delphi você deve fazer o seguinte:


procedure TForm1.btnExecProc(Sender: TObject);
begin
   
with storedproc1 do
       
begin
           
if Active then Close;
            ParamByName('@lastname').Text := Edit1.Text;
            ParamByName('@firstname').Text := Edit2.Text;
            Open;
       
end;
end;

Ir para o Topo

Stored Procedure com parâmetros Default

Esta Stored Procedure é parecida com a do exemplo acima, só que agora os dois parâmetros têm valores default, isto significa que se você não passar valores para um dos parâmetros, o servidor irá usar os valores default, no exemplo os autores que tenham o sobrenome começando com "D" e o primeiro nome começando com "A".

CREATE PROCEDURE sp_au_info2
    @lastname varchar(30) = 'D%',
    @firstname varchar(18) = 'A%'
AS 
SELECT au_lname, au_fname, title, pub_name
FROM authors a, titles t, publishers p, titleauthor ta
WHERE au_fname LIKE @firstname
AND au_lname LIKE @lastname
AND a.au_id = ta.au_id
AND t.title_id = ta.title_id
AND t.pub_id = p.pub_id


Para executá-la no Delphi você pode fazer como no exemplo anterior.

Ir para o Topo

Stored Procedure com parâmetro OUTPUT 

Parâmetros OUTPUT permitem acessar um valor "setado" durante a execução da Stored Procedure. A Strored Procedure titles_count_sum tem um parâmetro INPUT opcional(porque se você não passar nenhum parâmetro, o servidor usará o valor Default (%) e retornará todos os títulos) e dois parâmetros OUTPUT. Ela retorna o nome do título do livro recebido pelo parâmetro @title e também retorna no primeiro parâmetro (@count) o número de livros encontrado. Já o segundo parâmetro (@sum) retorna o valor da soma do preço dos livros encontrados. 

CREATE PROCEDURE titles_count_sum 
    @title varchar(40) = '%',
    @count money OUTPUT
    @sum money OUTPUT
AS
    SELECT @count = COUNT(title_id)
    FROM titles
    WHERE title LIKE @title

    SELECT @sum = SUM(price)
    FROM titles
    WHERE title LIKE @title

Para executar esta sp no Delphi você deve fazer como segue:

procedure TForm1.Button1Click(Sender: TObject);
begin
   
with StoredProc1 do
       
begin
           
if Active then Close;
            ParamByName('@title').Text := Edit1.Text;
            ExecProc;
            Edit2.Text := ParamByName('@sum').Text;
            Edit2.Text := ParamByName('@count').Text;
       
end;
end;

Ir para o Topo

 

Todos os produtos mencionados são marcas registradas ou marcas comerciais de suas respectivas empresas.

Perguntas ou problemas a respeito deste website devem ser enviadas para
allsoft@bol.com.br

Copyright © 1999-2001 allSoft - Sistemas. Vitória/ES - Brasil. 
Todos os direitos reservados.