mr.freeze 0 Denunciar post Postado Março 7, 2007 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
Eclesiastes 2 Denunciar post Postado Março 8, 2007 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