Fórum procedure no MySql #486270
22/07/2014
0
por exemplo tenho a tabela faturas com os campos a,b,c,d,e.
no parametro de entrada iriei passar os valores de a,b,c,d,e para a consulta....e então tenho que realizar uma consulta(select) colocando o campo a,b,c na clausula dessa consulta, caso a consulta tenha retorno então iriei retornar os campos a,b,c,d,e,f,g,h.
mas caso essa consulta não retorne nada irei pesquisar pela proxima condição sendo por b,c,d caso tenha retorna, caso não passo para a,c,d....e assim vai....
Como posso montar essa procedure ?
Robson Morais
Curtir tópico
+ 0Posts
22/07/2014
Marisiana Battistella
Vc já criou alguma estrutura?
Poderia postar pra vermos como vc está fazendo?
Gostei + 0
22/07/2014
Robson Morais
tabela fcr_compvendas
campos nsu, autorizacao, datavenda, datavencimento e parcela
então quero assim...
select * from fcr_compvendas where parcela = p_parcela and nsu = p_nsu and autorizacao = p_autorizacao
p_parcela, p_nsu e p_autorizacao seria os parametros....
caso não tenho nada de retorno nessa pesquisa terei que fazer outra....
select * from fcr_compvendas where parcela = p_parcela and autorizacao = p_autorizacao and datavenda = p_datavenda
e etc
Gostei + 0
23/07/2014
Robson Morais
Gostei + 0
23/07/2014
Marisiana Battistella
Em primeiro lugar, como boa prática, nunca utilize "select * from....", sempre inclua os nomes das colunas que vc precisa que o SQL retorne...
Isso reduz o processamento que o database terá que fazer, pois reduz o volume de retorno de dados...
Se vc apenas precisa saber se o primeiro select retornou dados ou não, vc pode fazer o seguinte:
Declara uma variável para receber o retorno do SQL:
select COUNT(fcv.<nomedoidentificador>) into v_variável from fcr_compvendas fcv where parcela = p_parcela and nsu = p_nsu and autorizacao = p_autorizacao
Em seguida, vc cria uma estrutura de controle IF... THEN... ELSE para verificar se a variável possui algum valor...
IF v_variavel IS NULL THEN
<define o que será realizado nessa condição>
ELSE
<define o que será realizado nessa condição>
END IF; Gostei + 0
23/07/2014
Marisiana Battistella
Gostei + 0
23/07/2014
Alex Lekao
meio complexo, vou acompanhar para conhecimento. rsrs
Gostei + 0
23/07/2014
Ronaldo Lanhellas
Gostei + 0
23/07/2014
Robson Morais
Gostei + 0
23/07/2014
Robson Morais
só foi um exemplo, tenho que passar os seguintes parametros de entrada....
p_nsu, p_aut, p_dtvenda, p_parcela e p_valor
e irei dar saida desses campos que vai ser retornado do sql....mas terei criterios de pesquisa, se não acha por nsu e aut vai por parcela e nsu, se não sai por esse vai para outro....
Gostei + 0
23/07/2014
Marisiana Battistella
[url]https://www.devmedia.com.br/stored-procedures-no-mysql/29030[/url]
[url]http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html[/url]
[url]http://www.mysqltutorial.org/stored-procedures-parameters.aspx[/url]
Exemplo de estrutura:
DELIMITER $$
CREATE PROCEDURE CountOrderByStatus(
IN orderStatus VARCHAR(25),
OUT total INT)
BEGIN
SELECT count(orderNumber)
INTO total
FROM orders
WHERE status = orderStatus;
END$$
DELIMITER ;
Gostei + 0
23/07/2014
Ronaldo Lanhellas
1 - WHERE nsu = x, aut = x
2 - WHERE nsu = x
3 - WHERE aut = x
e assim por diante ...
Você vai buscando em cada WHERE até que o resultado seja maior que zero. Bem simples porém é uma trabalho demorado dependendo da quantidade de filtros que você deseje.
Gostei + 0
23/07/2014
Robson Morais
SQL Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END$$
DELIMITER' at line 1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END$$
DELIMITER' at line 1
[url]https://www.devmedia.com.br/stored-procedures-no-mysql/29030[/url]
[url]http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html[/url]
[url]http://www.mysqltutorial.org/stored-procedures-parameters.aspx[/url]
Exemplo de estrutura:
DELIMITER $$
CREATE PROCEDURE CountOrderByStatus(
IN orderStatus VARCHAR(25),
OUT total INT)
BEGIN
SELECT count(orderNumber)
INTO total
FROM orders
WHERE status = orderStatus;
END$$
DELIMITER ;
Gostei + 0
24/07/2014
Marisiana Battistella
Gostei + 0
24/07/2014
Robson Morais
Gostei + 0
24/07/2014
Marisiana Battistella
Teria que ver o que pode estar errado...
Se eu pudesse testar aqui e t passar a resposta mais completa eu faria, mas...
Desculpa não poder ajudar mais....
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)