Dica do dia: MySQL DELIMITER

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Dica do dia: MySQL DELIMITER

Mensagem por JoséQuintas »

Supondo que o conteúdo da função fosse

Código: Selecionar todos

;
;
;
;
Nos editores SQL, o ponto e vírgula costuma indicar a finalização do comando, e podemos digitar vários comandos pra executar depois todos em sequência.
Então seria impossível digitar um comando pra criar a função acima.
o "console" do MySQL é um deles, e o HeidiSQL é outro.
Foi pra isso que inventaram o DELIMITER.

Código: Selecionar todos

DELIMITER $$
;
;
;
;
;
$$
Na documentação do MySQL apenas mostra o DELIMITER, porque usa no console dele, mas não diz que isso NÃO faz parte do comando.
Acabei pensando que fazia parte do comando, ou que era obrigatório, e por isso não funcionava de jeito nenhum.

Vai executar pelo aplicativo: DELIMITER não existe
Vai digitar no HeidiSQL ou no console do MySQL? precisa o DELIMITER, pra avisar ao HeidiSQL ou ao console MySQL que tudo é um único comando.

Façam pra curiosidade: procurem no google sobre o uso/erros de DELIMITER.
Não vão encontrar nenhum post explicando o que estou colocando aqui.
Pelo contrário, eles vão dar a impressão de que sempre faz parte do comando.


Acho até que muita gente desistiu de criar STORED PROCEDURES/FUNCTIONS por causa disso.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Dica do dia: MySQL DELIMITER

Mensagem por JoséQuintas »

mysql.png
https://www.mysqltutorial.org/mysql-sto ... delimiter/

Olhando esse manual, por exemplo, se não ler atentamente as entrelinhas, parece até fazer parte normal dos comandos.
mysql2.png
Acima, as entrelinhas, dizendo que é pra CLIENTE MYSQL, pra interpretadores de comandos, assim como o workbench e o console MySQL.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Dica do dia: MySQL DELIMITER

Mensagem por JoséQuintas »

Convém destacar mais uma coisa aí:

Se SQLMIX precisa ou não disso.... não sei dizer.
No ADO sei que não precisa, mas se depende do "cliente", depende de como foi implementado o SQLMIX.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder