Ir para conteúdo

POWERED BY:

Arquivado

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

mr.freeze

Problema com procedure

Recommended Posts

seguinte:

 

CREATE PROCEDURE `SP_PERFIL_LISTA`(

-- SP_PERFIL

-- TABELAS:

-- TB_PERFIL

-- VARIAVEIS DE DADOS

-- VAR_ID BIGINT

-- VAR_NOME VARCHAR(255)

-- VAR_STATUS TINYINT

--

-- Uso: call SP_PERFIL (ACAO,VAR_ID,VAR_NOME,VAR_STATUS,VAR_PONTEIRO,VAR_LIMITE)

--

-- Autor: Kleber Martins

--

-- Data Ultima Alteração: 07/03/07

 

IN

ACAO CHAR(2),

VAR_ID BIGINT,

VAR_NOME VARCHAR(255),

VAR_STATUS TINYINT,

VAR_PONTEIRO TINYINT,

VAR_LIMITE TINYINT )

BEGIN

CASE ACAO

WHEN "LS" THEN

IF (VAR_ID>0) THEN

SELECT * FROM TB_PERFIL WHERE PRF_ID=VAR_ID;

ELSE

SELECT * FROM TB_PERFIL;

END IF;

WHEN "PG" THEN

SELECT VAR_ID FROM TB_PERFIL LIMIT VAR_PONTEIRO,VAR_LIMITE;

END CASE;

END

 

 

O Problema esta em negrito, diz que tem um erro ali, eu nao consigo usar as variavels que vem na procedure no limit????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que dessa forma não...Pois como diz o manual da versão 4.1 (traduzido):

Variáveis de usuários devem ser utilizadas em expressões onde são permitidas. Isto não inclui utiliza-las em contextos onde um número é explicitamente necessário, assim como na cláusula LIMIT de uma instrução SELECT ou a clausula IGNORE number LINES de uma instrução LOAD DATA.

Mas você pode montar a query (prepared statements) numa variável e executá-la.

As of MySQL 5.0.7, placeholders can be used for the arguments of the LIMIT clause when using prepared statements.

http://dev.mysql.com/doc/refman/5.0/en/sqlps.html

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.