Ir para conteúdo

POWERED BY:

Arquivado

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

Rcast

erro de sintaxe em stored procedure.

Recommended Posts

Versão do cliente MySQL: 5.0.51a

Tabelas em INNODB

Segue abaixo o codigo e o erro:

 

-------------------------------------------------------------------------------------------------------------

 

CREATE PROCEDURE T01_Membros.InsMembro(

@nome VARCHAR( 40 ) ,

@documento varchar( 20 ) ,

@sexo char( 1 ) ,

@endereco varchar( 60 ) ,

@cidade varchar( 30 ) ,

@estado char( 2 ) ,

@tel_1 varchar( 10 ) ,

@tel_2 varchar( 10 ) ,

@login_email varchar( 40 ) ,

@senha varchar( 24 ) ,

@codigoconfirma tinyint( 4 ) ,

@confirmado tinyint( 1 ) ,

@data_nasc date,

@tipoconta tinyint( 3 ) ,

@data_cadastro varchar( 10 ) ,

@ultimo_acesso varchar( 10 )

) AS INSERT INTO usuario(

C01_nome,

C01_documento,

C01_sexo,

C01_endereco,

C01_cidade,

C01_estado,

C01_tel_1,

C01_tel_2,

C01_login_email,

C01_senha,

C01_codigoconfirma,

C01_confirmado,

C01_data_nasc,

C01_tipo_conta,

C01_data_cadastro,

C01_ultimo_acesso

)

VALUES (

@nome , @documento , @sexo , @endereco , @cidade , @estado , @tel_1 , @tel_2 , @login_email , @senha , @codigoconfirma , @confirmado , @data_nasc , @tipoconta , @data_cadastro , @ultimo_acesso

)

SET @login_email = @ @IDENTITY

 

Mensagens do MySQL : Documentação

#1064 - Você tem um erro de sintaxe no seu SQL próximo a '@nome VARCHAR(40),

@documento varchar(20),

@sexo char(1),

@endereco var' na linha 3

 

-------------------------------------------------------------------------------------------------------------------

 

Ja tentei tirar espaço, colocar espaço, tirar virgula, colocar ponto e virgula, google, site do mysql e nao consegui achar a solução

Alguem consegue me ajudar?

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada nesta documentação: http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

Tem esta matéria no iMasters: http://imasters.com.br/artigo/7556/mys...dures_no_mysql/

 

você vai ter que adaptar esta sua procedure para a sintax do MySql. Está bem diferente. Esta sintax que você está utilizando é de qual banco? SQL Server?

 

Bom, de qualquer forma vai ter que reescrever esta procedure para o MySQL. Se ainda tiver dúvidas posta ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dieferenças entre Stored Procedures no SQL Server e no MySQL são grandes.

Enquanto no SQL Server, que se escreve com a linguagem T-SQL, @var é uma variável local, no MySQL variáveis locais são declaradas sem o @.

CREATE PROCEDURE imasters(IN num INT)
BEGIN
	DECLARE var INT DEFAULT 0;
	...
END;
O tipo de variável no MySQL que utiliza o @, se chamam user variables, e estas não necessitam de declaração.

Podem ser inicializadas assim:

SET @var = 'Wagner Bianchi';

SELECT @var := coluna FROM tabela;
Na verdade, você terá alguns pontos de dificuldade para reescrever seu procedimento, mas você consegue.

Dê um lida nestes artigos:

 

Stored Porcedures parte 1: http://imasters.com.br/artigo/7556/mys...dures_no_mysql/

Stored Porcedures parte 2 (Transações): http://imasters.com.br/artigo/7755/mys...s_-_transacoes/

 

Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era em SQL Server a consulta anterior sim..

Consegui passar pra Mysql, foi fácil até..

Caso alguem queira usar para consultas futuras ficou assim o código:

 

------------------------------------------------------------------------------------------

DROP PROCEDURE IF EXISTS InsMembro;

 

CREATE PROCEDURE InsMembro

(

v_nome VARCHAR(40),

v_documento varchar(20),

v_sexo char(1),

v_endereco varchar(60),

v_cidade varchar(30),

v_estado char(2),

v_tel_1 varchar(10),

v_tel_2 varchar(10),

v_login_email varchar(40),

v_senha varchar(24),

v_codigoconfirma tinyint(4),

v_confirmado tinyint(1),

v_data_nasc date,

v_tipoconta tinyint(3),

v_data_cadastro varchar(10),

v_ultimo_acesso varchar(10)

)

 

INSERT INTO banco.tabela

(C01_nome, C01_documento, C01_sexo, C01_endereco, C01_cidade,

 

C01_estado, C01_tel_1, C01_tel_2, C01_login_email, C01_senha,

 

C01_codigoconfirma, C01_confirmado, C01_data_nasc, C01_tipo_conta,

 

C01_data_cadastro, C01_ultimo_acesso)

VALUES

(v_nome, v_documento, v_sexo, v_endereco, v_cidade, v_estado,

 

v_tel_1, v_tel_2, v_login_email, v_senha, v_codigoconfirma, v_confirmado,

 

v_data_nasc, v_tipoconta, v_data_cadastro, v_ultimo_acesso)

------------------------------------------------------------------------------------------------------

 

 

Obrigado pela ajuda!

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.