O que é procedure?[RESOLVIDO]

o que é?E alguem poderia dar-me um exemplo de procedure?


http://www.linhadecodigo.com.br/Artigo.aspx?id=335

isso tem de monte no google cara

procedure é algo como um bloco de código SQL para realizar um determinado PROCEDIMENTO

Sem falar que ele nem especificou que procedure é essa. Poderia ser, por exemplo, procedures da linguagem Pascal.
É muito importante detalhar as dúvidas.

Boa tarde a todos.

[quote=erickfm8]isso tem de monte no google cara

procedure é algo como um bloco de código SQL para realizar um determinado PROCEDIMENTO[/quote]

Voce está correto quando diz que a tradução de “Procedure” é “Procedimento”, e parcialmente correto quando diz que procedure é um bloco de código SQL, é isto também, porém Procedure não é só isto.

Procedure ou Procedimento é um trecho de código separado para executar uma determinada tarefa, um determinado comportamento, e após a sua execução deve retornar uma linha imediatamente abaixo de onde esta procedure foi invocada.

Nos tempos primórdios da programação, isto no final dos anos 70 e meados dos 80, em que o monitor era aquele CRT (Catod Ray Tube - Tubo de Raios Catódicos), de fósforo verde ou preto, em que o sistema operacional era o antigo DOS (Disk Operating System ou Sistema Operacional em Disco), as linguagens de programação interpretadas como Basic, MS Basic e muitos outros, o interpretador de comandos de cada linguagem interpretava sequencialmente, ou seja, era traduzida linha por linha e quando algum trecho de código se repetia em vários trechos de linhas, esse trecho era separado para que não ficasse escrevendo-o a toda hora, inicialmente este trecho foi batizado com o nome “Sub-Rotina” onde na linguagem Basic ou MS Basic, este trecho era invocado com a sintaxe “gosub 150”, onde 150 era o número da linha onde começava a sub-rotina e termina a sub-rotina em uma determinada linha com a sintaxe “200 return”, onde, é claro, 200 é o número da linha.

As linguagens foram aperfeiçoadas e passaram a ser compiladas, e linkeditadas com as bibliotecas do sistema operacional onde era desenvolvida, a fim de se criar uma arquivo executável, linguagens tais como o Cobol, Clipper, Pascal, C e etc., dai o conceito de Sub-Rotina passou a ser mais aprimorado, onde a linguagem Clipper, oriunda do banco de dados DBase III em modo programado, adotou as sub-rotinas sendo invocadas por um nome, e as rebatizou como “Procedimento ou Procedure”, delimitando-as com a instrução “begin” e “end”, a linguagem pascal adotou o mesmo conceito, entretanto não tenho certeza de quem adotou primeiro, se o Clipper ou Pascal, isto porque ambas tiveram ênfase na mesmo época, ou seja, meados dos anos 80. A partir dai, a execução foi abandonando, aos poucos, o padrão de execução sequencial.

Com o aperfeiçoamento de IDEs gráficas em ambiente de desenvolvimento, isto na década de 90, o conceito de procedures evoluiram com as implementações orientadas a evento, e mais tarde com as linguagens orientada a objetos. O Visual Basic adotava ainda o conceito de sub-rotina, implementando os seus eventos com sintaxe tais como “private sub nome_da_rotina” e também o conceito de “functions” que era um tipo de procedimento com uma especialidade a mais, ou seja, era um procedimento que retornava valores.

No Delphi, que adotou a linguagem Pascal orientada a objetos, o Object Pascal, seguiu o mesmo conceito em que “Functions” retornava valores e “Procedures” só executava códigos. E a linguagem Java acompanhou a mesma linha, onde os métodos que retornam valores são tipados antes do seu nome, enquanto que os que somente executam códigos são os métodos “void”.

Já que voce citou o SQL, voce pode também criar procedimentos dentro do seu SGDB, ou seja, o seu Banco de Dados, onde estes procedimentos que são chamados de “Stored Procedures”, agrupam várias instruções SQL, para serem executadas de uma única vez.

Segue abaixo alguns exemplos de procedure nas diversas linguagens de programção.

   // No Visual Basic (VB)
   // Evento disparado quando o Form é carregado
   Private Sub Form_Load()
        ' Executa uma simples caixa de mensagem e escreve "Olá mundo!"
         MsgBox "Olá senhoras e senhores !"
   End Sub

   // Object Pascal do Delphi, dentro da seção "implementation"
   implementation
   {$R *.dfm}

   // Método que retorna um valor inteiro
   TFrm1.Function GetSum(a, b : Integer) : Integer;
   begin
        //Soma os dois números e retorna o resultado.
        Result := a + b; // Result é idêntico ao return do Java
   end;

    // Este método é disparado com o evento da criação do Form.
   procedure TFrm1.FormCreate(Sender: TObject);
   var
   total : Integer;
   begin
          //Mostra o resultado
          total := GetSum(1,2);
           ShowMessageFmt(?%d + %d = %d?,[1,2,total]);

          total := GetSum(62,444);
          ShowMessageFmt(?%d + %d = %d?,[62,444,total]);
   end;

   end.

   // Na linguagem Java
   // Método que retorna valor
   public Double media(Integer a, Integer b){
          return (a + b) / 2;
   }

   // Método tipo procedure do Delphi (Só executa código), em Java
   public void mensagem(String aprompt, String acaption){
       JOptionPane.showMessageDialog(null,aprompt,acaption,JOptionPane.WARNING_MESSAGE);
   }

   // Na Linguagem SQL do Firebird
   CREATE PROCEDURE ADJUST_SALARY_RANGE (FACTOR FLOAT) 
   AS 
   BEGIN 
        UPDATE JOB  SET MIN_SALARY=MIN_SALARY * :FACTOR, MAX_SALARY=MAX_SALARY * :FACTOR; 
   END ^
   
   // Invocando a stored procedure acima no Firebird
   EXECUTE PROCEDURE ADJUST_SALARY_RANGE(1.1); 

Espero ter esclarecido

3 curtidas