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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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