Clipper On Line • Ver Tópico - duvidas com comando mysql?

duvidas com comando mysql?

Discussão sobre SQL

Moderador: Moderadores

 

duvidas com comando mysql?

Mensagempor pena » 15 Mai 2019 22:04

Boa noite pessoal, estou utilizando mysql e com classes, só que esta me retornando erros que via heidysql funcionam, precisava de uma ajuda, alguem estaria disponivel pra trocarmos uma ideia
ja de saida vou colocar um comando aqui que esta retornando erro
   cSql:=""
   If Bloq
      cSql:="Start Transaction; "
   endif
   cSql+="Select * from CadCof where Id_key = "+Str(cCod,7)+";"
   oQCadCof := oServer:Query( cSql )
   If oServer:NetErr()
     MsGInfo("Erro ao executar sql - Selecionando codigo "+csql )
   Endif

pois entao, se o Bloq vem falso, funciona, senao da erro, comando basico do mysql
Avatar de usuário

pena
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 331
Data de registro: 06 Jul 2004 18:08
Cidade/Estado: CACHOEIRA DO SUL-RS
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

duvidas com comando mysql?

Mensagempor alxsts » 16 Mai 2019 01:08

Olá!
pena escreveu:ja de saida vou colocar um comando aqui que esta retornando erro

Qual erro? Você não informa mas pode-se imaginar alguns tipos conforme o teu exemplo.
pena escreveu:pois entao, se o Bloq vem falso, funciona, senao da erro, comando basico do mysql

Qual o conteúdo de cCod? Não dá para saber mas, se você está usando Str(), supõe-se que seja uma conversão de numérico para carácter. Se isto for verdade, o valor de cCod deveria ser colocado entre aspas na string a enviar ao banco de dados. Assim, teriamos:
"Select * from CadCof where Id_key = '"+Str(cCod,7)+"';"  // Note as aspas simples

Olhando o código, se bloq vem como verdadeiro, a string ficaria ""
"Start Transaction; Select * from CadCof where Id_key = '"+ <algum conteúdo> + "';"

Não mostra a sequência do código. Por que abrir uma transação? Existe o respectivo commit? Sabe o que é e para que serve uma transação?

Veja se este conteúdo interessa: Transação em base de dados
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

duvidas com comando mysql?

Mensagempor pena » 16 Mai 2019 08:11

Sei sim o que é uma transação, trabalho com cobol x mysql a 7 anos, no entanto, aqui na empresa não quisemos arriscar o que no cobol funciona bem, então o bloqueio é tratado numa tabela a parte, e funciona bem. Neste caso o projeto é particular, e dae eu pensei, "impossível que uma ferramenta do padrão do mysql não funcione o bloqueio", então estava tentando fazer funcionar. A documentação do mysql diz, o arquivo tem que ser innodb, e se tiver marcado autocommit = true, a cada select se inicia com begin transaction, o select nao esta correto ali, faltou um comando, mas como estava em teste, passou despercebido, mas igual, se eu rodo no heidi ele executa, e ali nao, o comando faltou Lock in Share Mode, um detalhe, se passar bloq falso, ele funciona
   cSql:=""
   If Bloq
      cSql:="Start Transaction; "
   endif
   msgstop("entrei")
   cSql+="Select * from CadCof where Id_key = "+Str(cCod,7)+" Lock in Share Mode;"
   oQCadCof := oServer:Query( cSql )
   If oServer:NetErr()
     MsGInfo("Erro ao executar sql - Selecionando codigo "+csql )
   Endif


ninguém bloqueia registro com mysql? Não deve ser um bixo de sete cabeças, alguem saberia dizer onde acho uma documentação?
Avatar de usuário

pena
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 331
Data de registro: 06 Jul 2004 18:08
Cidade/Estado: CACHOEIRA DO SUL-RS
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

duvidas com comando mysql?

Mensagempor alxsts » 16 Mai 2019 08:58

Olá!

Pode-se utilizar SELECT ... FOR UPDATE.

Veja este material na documentação do MySQL: 15.7.2.4 Locking Reads.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

duvidas com comando mysql?

Mensagempor pena » 16 Mai 2019 09:08

mas segundo a documentação, eu tenho que abrir uma transação junto sempre, então não é essa a questão, a questão é que ele não esta executando o select
Avatar de usuário

pena
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 331
Data de registro: 06 Jul 2004 18:08
Cidade/Estado: CACHOEIRA DO SUL-RS
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

duvidas com comando mysql?

Mensagempor JoséQuintas » 01 Jun 2019 21:34

Reabrindo o assunto....
Se não me engano, é BEGIN TRANSACTION

Que eu saiba, isso é para atualizações, pra cancelar algo que foi feito.
Sendo assim, não tem sentido colocar isso num SELECT, que é apenas de leitura.

pena escreveu:dae eu pensei, "impossível que uma ferramenta do padrão do mysql não funcione o bloqueio"


Só não é algo comum.

https://www.google.com/search?q=mysql+lock&ie=&oe=
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

duvidas com comando mysql?

Mensagempor pena » 02 Jun 2019 21:05

pra mim é o básico de uma engenharia de software, dei o meu jeito, mas não insisti em fazer funcionar com a ferramenta mysql
Avatar de usuário

pena
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 331
Data de registro: 06 Jul 2004 18:08
Cidade/Estado: CACHOEIRA DO SUL-RS
Curtiu: 0 vez
Mens.Curtidas: 3 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro