Function no Mysql
Bom Dia,
Perguntinha de Iniciante, rsrsrsrs,
Na criação de
Desde já agradeço.
Perguntinha de Iniciante, rsrsrsrs,
Na criação de
Function no Mysql
só retorna um valor (campo)? Se não, pode me dar um exemplo?Desde já agradeço.
Dirceu Morais
Curtidas 0
Respostas
Raimundo Pereira
30/06/2018
Depende do seu result
GOSTEI 0
Raimundo Pereira
30/06/2018
Array ou record, poderá armazenar mais de um result.
GOSTEI 0
Dirceu Morais
30/06/2018
No Firebird eu uso a Function assim:
Essa função me retorna a quantidade de viagem realizadas, mas para considerar uma viagem, o tempo tem que ser maior que 2 e id = 1 ou
id > 2
Como eu faço essa mesma função no Mysql?
create or alter procedure fn_viagens ( idata date, ilinha integer) returns ( qviagem integer) as --Faço a declaração da minhas variaveis declare variable line integer; declare variable processou boolean; declare variable tempo integer; declare variable km integer; declare variable ponto varchar(10); declare variable id_ integer; begin --Atribuo valores as variaveis line = 1; Processou = False; qviagem = 0; /* Percorrer o cadastro de viagem */ For select viagem_id, km, tempo, pontos from meia_viagem v WHERE v.data = :idata and v.linha = ilinha into :id, :km, :tempo, :pontos do Begin If line = 1 Then Begin if (km > 0) and (tempo > 2) Then Begin qViagem := qViagem + 1; Processou := True; end end Else begin if id_ = 1 Then Begin if (km > 0) Then Begin if ((pontos = 'PT1 - PT1') and (tempo > '00:02:00')) or (pontos <> 'PT1 - PT1') Then Begin qviagem := qviagem + 1; Processou := True; end; end; end Else if Not Processou and (km> > 0) and (tempo > 2) Then Begin qviagem := qviagem + 1; Processou := True; end; Ponto := pontos; end; line = line + 1; end; end
Essa função me retorna a quantidade de viagem realizadas, mas para considerar uma viagem, o tempo tem que ser maior que 2 e id = 1 ou
id > 2
Como eu faço essa mesma função no Mysql?
GOSTEI 0
Dirceu Morais
30/06/2018
Gente ****AJUDA****
Talvez não seja necessário fazer uma Function.
Vamos ao problema:
Tenho um bloco viagens, onde é registrado o tempo de cada ponto.
Se o tempo total do bloco for menor que 5:00minutos é porque não foi realizado a viagem.
Minha tabela é mais ou menos assim:
Neste exemplo eu teria 2 viagens.
Deu um branco
Socorro.
Talvez não seja necessário fazer uma Function.
Vamos ao problema:
Tenho um bloco viagens, onde é registrado o tempo de cada ponto.
Se o tempo total do bloco for menor que 5:00minutos é porque não foi realizado a viagem.
Minha tabela é mais ou menos assim:
|viagem_id|carro|data |linha|pontos |inicio**|**fim***|tempo***|bloco| | 1|74039|2018-05-02|4148 |PT1 - PT2|11:29:28|11:29:38|00:00:10| 648| | 2|74039|2018-05-02|4148 |PT2 - PT1|11:37:40|12:17:30|00:39:50| 648| | 3|74039|2018-05-02|4148 |PT1 - PT2|12:18:14|13:02:12|00:43:58| 648| | 1|80021|2018-05-02|4148 |PT1 - PT2|17:02:48|17:03:00|00:00:12| 792| | 2|80021|2018-05-02|4148 |PT2 - PT1|17:04:18|17:39:18|00:35:00| 792| | 3|80021|2018-05-02|4148 |PT1 - PT2|17:40:02|18:24:40|00:44:38| 792| | 4|80021|2018-05-02|4148 |PT2 - PT2|18:25:56|18:25:56|00:00:00| 792|
Neste exemplo eu teria 2 viagens.
Deu um branco
Socorro.
GOSTEI 0
Dirceu Morais
30/06/2018
Bom dia povo!!!!!
Com relação a criação da função no mysql continuo "apanhando", mas pelo menos consegui fazer a instrução no sql sem a necessidade da função.
Para quem precisar, vai ai a solução:
Ou seja, eu usei o count(Distinct...) ao invés de usar count(*)
Brigadú
Com relação a criação da função no mysql continuo "apanhando", mas pelo menos consegui fazer a instrução no sql sem a necessidade da função.
Para quem precisar, vai ai a solução:
select Count(distinct Bloco) from meia_viagem v WHERE v.data = :Data and v.linha = :Linha and v.tempo > '00:05:00'
Ou seja, eu usei o count(Distinct...) ao invés de usar count(*)
Brigadú
GOSTEI 0