GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Converter Codigo SQL SERVER para MySQL


#1

Olá Pessoal. Eu sou novo em desenvolvimento de Procedures no MySQL e tenho encontrado serias dificuldades em converter codigos de SQL SERVER para MySQL. Aqui segeue-se um trecho de um bloco de codigo de uma procedure e acontece que dá um erro sintaxe e não reconhece algumas palavras reservadas:

SQL SERVER:
create proc [spMostrar_Pessoa]
@RegistrosPorPagina int,
@NumeroPagina int
as
begin
set nocount on
SELECT *FROM [dbo].[pessoal] order by [id_patente]
OFFSET (@NumeroPagina -1) * @RegistrosPorPagina rows
fetch next @RegistrosPorPagina rows only
end;

Mysql:
CREATE PROCEDURE spMostrar_Pessoa(
IN RegistrosPorPagina INT(11),
IN NumeroPagina INT(11) )
BEGIN
SET NOCOUNT ON
SELECT *FROM tb_pessoa ORDER BY Cod_Pessoa OFFSET (NumeroPagina -1) * RegistrosPorPagina ROWS FETCH NEXT RegistrosPorPagina ROWS ONLY
END

No MySQL: Dá o seguinte erro - you have an error in your sql syntax; check the manual that corresponds mysql server version right syntax use near 'ON
SELECT *FROM tb_pessoa ORDER BY Cod_Pessoa OFFSET (NumeroPagina -1) * Regis at line 5


#3

automaticamente acho difícil:
https://stackoverflow.com/questions/36787386/migrate-only-stored-procedure-from-sql-server-to-mysql-automatically

vai ter q ser na mão mesmo amigo…


#4

@blayd2015 obrigado pela ajuda. Ainda assim não dá certo…


#5

Bom dia!

De fato, não existe essa função no MySQL.

O tal erro se refere justamente a isso. Ou seja, vc não vai conseguir fazer o que quer com essa função no MySQL.

O efeito dessa função do SQL Server é descrito aqui:
https://docs.microsoft.com/en-us/sql/t-sql/statements/set-nocount-transact-sql

Uma coisa que vc pode tentar é o seguinte:
https://forums.mysql.com/read.php?101,205784,242371#msg-242371

Agora, se sua preocupação tem a ver com performance, na vdd, o mais correto é procurar um DBA pra te ajudar a construir o que vc precisa de uma forma que atinja o resultado com o custo mínimo de memória esperado, até pra vc não ficar se matando tentando descobrir isso na raça.