Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

arthurvidotto

Erro de Sintaxe o que pode ser?

Recommended Posts

CODE

BEGIN

IF (v_nPkSolicitacao > 0)
BEGIN
UPDATE Hellp_SolicitacaoTI
SET
cEmpresa = v_cEmpresa,
cColaborador = v_cColaborador,
cRamal = v_cRamal,
cProblemaSolicitacao = v_cProblemaSolicitacao,
cDescricaoOutros = v_cDescricaoOutros,
cDescricaoProblema = v_cDescricaoProblema,
cConcluido = v_cConcluido,
cExcluido = v_cExcluido
WHERE nPkSolicitacao = v_nPkSolicitacao

SET v_retorno = v_nPkSolicitacao
END
ELSE
BEGIN
SELECT v_retorno = (count(nPkSolicitacao) + 1) FROM Hellp_SolicitacaoTI

INSERT INTO Hellp_SolicitacaoTI (nPkSolicitacao, cEmpresa, cColaborador, cRamal, cProblemaSolicitacao, cDescricaoOutros, cDescricaoProblema, cConcluido, cExcluido)
VALUES (v_retorno, v_cEmpresa, v_cColaborador, v_cRamal, v_cProblemaSolicitacao, v_cDescricaoOutros, v_cDescricaoProblema, v_cConcluido, v_cExcluido)
END

SELECT @retorno;
END


Em algum lugar está errado, nunca fiz um if no mysql o que poderia ser???

Obrigado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poderia nos informar qual o erro amigo ?

Alaerte, tudo bem?

 

entao eu uso o EMS SQL Manager 2007, aqui quando da qualquer erro de sintaxe no script ele diz que "está com erro de sintaxe" mas nesse ele diz que esta perto de:

 

BEGIN

UPDATE Hellp_SolicitacaoTI

SET

cEmpresa = v_cEmpresa,

 

Eu acho que pode ser algum problema na colocação da condição, ve o que pode me ajudar !

 

Abraços !

Compartilhar este post


Link para o post
Compartilhar em outros sites

todas essas variáveis foram declaradas?

Sim, todas, vou repassar novamente o script porém mais completo com os parametros declarados...

 

quem souber o problema me avise...

Abraços !

 

CODE
CREATE DEFINER = CURRENT_USER PROCEDURE `Hellp_SolicitacaoSalvar`(IN v_nPkSolicitacao INTEGER, IN v_cEmpresa VARCHAR(255), IN v_cColaborador VARCHAR(255), IN v_cRamal VARCHAR(50), IN v_cProblemaSolicitacao VARCHAR(255), IN v_cDescricaoOutros TEXT, IN v_cDescricaoProblema TEXT, IN v_cConcluido CHAR(1), IN v_cExcluido CHAR(1), IN v_retorno INTEGER)

NOT DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

BEGIN

 

IF (v_nPkSolicitacao > 0)

BEGIN

UPDATE Hellp_SolicitacaoTI

SET

cEmpresa = v_cEmpresa,

cColaborador = v_cColaborador,

cRamal = v_cRamal,

cProblemaSolicitacao = v_cProblemaSolicitacao,

cDescricaoOutros = v_cDescricaoOutros,

cDescricaoProblema = v_cDescricaoProblema,

cConcluido = v_cConcluido,

cExcluido = v_cExcluido

WHERE nPkSolicitacao = v_nPkSolicitacao

 

SET v_retorno = v_nPkSolicitacao

END

ELSE

BEGIN

SELECT v_retorno = (count(nPkSolicitacao) + 1) FROM Hellp_SolicitacaoTI

 

INSERT INTO Hellp_SolicitacaoTI (nPkSolicitacao, cEmpresa, cColaborador, cRamal, cProblemaSolicitacao, cDescricaoOutros, cDescricaoProblema, cConcluido, cExcluido)

VALUES (v_retorno, v_cEmpresa, v_cColaborador, v_cRamal, v_cProblemaSolicitacao, v_cDescricaoOutros, v_cDescricaoProblema, v_cConcluido, v_cExcluido)

END

 

SELECT @retorno

END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mrs.. aparentemente você está tentando migrar uma PROCEDURE do Sql Server para o MySQL....

 

Você vai precisar escrevê-la novamente.... a unica coisa q vai utilizar da antiga é a lógica. As linguagens são diferentes. Esquece @variavel, esquece if xxxx begin yyyy end.., ok?

 

um bom caminho pra se acostumar com a liguagem... lembrando sempre para usar o manual da versáo que você tem do MySQL

http://dev.mysql.com/doc/refman/5.1/en/if-statement.html

 

abs,

SKa!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ska, Valeu cara pela boa dica...

 

 

Já consegui resolver a parada, e era como você disse estava tentando migrar de sqlserver para mysql. Escrevi ela novamente e agora rodou...

 

Agora uma outra coisa cara, to fazendo um update numa procedure e tenho uma coluna datetime como pego a hora exata, por que no sqlserver eu jogo no default da coluna um getdate(), mas eu ja sei que no mysql nao rola ! estou tentando fazer assim !

 

dDataCriacao = NOW()

 

aparentemente nao me retornou erro algum, mas tambem a data nao está aparecendo fica null??

 

Pode me ajudar??

 

Abraços !

Arthur

Compartilhar este post


Link para o post
Compartilhar em outros sites

NOW(), SYSDATE(), CURRENT_TIMESTAMP, CURRENT_TIMESTAMP(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP, LOCALTIMESTAMP()

Retorna a data e hora atual como um valor no formato 'YYYY-MM-DD HH:MM:SS' ou YYYYMMDDHHMMSS, dependendo se a função é utilizada num contexto numérico ou de string. ´

 

mysql> SELECT NOW();

 

para armazenar em uma variavel, nao sei como eh o esquema no MySQl pq nunca usei esse tipo de recurso dele.. mas provavelmente eh muito próximo ao pl/sql

 

SELECT now() INTO variavel_declarada;

 

 

no manual que te passei o link tem tudo isso lá... blza?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.