stored procedure dinâmica

MySQL

01/09/2009

Fala galera,

Preciso criar uma procedure, onde eu passo três parametros do tipo varchar que são: tabela, campo que estou pesquisando, e campo da tabela a ser pesquisado, para montar o meu select, por exemplo:

CREATE PROCEDURE SELECIONA(in _CAMPO VARCHAR(50),in _TABELA VARCHAR(50),in _CAMPOWHERE VARCHAR(50))
BEGIN
SELECT _CAMPO FROM _TABELA WHERE _CAMPOWHERE = _CAMPO;
END ;

o problema é que eu não sei como fazer, pq desse jeito está dando erro, não sei se declarando uma variável e concatenando o select dá para executar.

Vlw pela força!!!


Abermar

Abermar

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

01/09/2009

tente algo como:

CREATE PROCEDURE SELECIONA(in _CAMPO VARCHAR(50),in _TABELA VARCHAR(50),in _CAMPOWHERE VARCHAR(50))
BEGIN
  instrucao = concat(´SELECT ´, _CAMPO, ´ FROM ´, _TABELA, ´ WHERE ´, _CAMPOWHERE, ´ = ´, _VALOR)

  PREPARE minha_declaracao FROM instrucao;
  EXECUTE minha_declaracao;
END;



GOSTEI 0
Silviomorelo

Silviomorelo

01/09/2009

emerson.en

No seu exemplo, quando vc coloca a instrução:

Prepare minha_declaracao from instrucao este comando está dentro da SP? e o que seria minha_declaracao?

Obrigado


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

01/09/2009

  instrucao = concat(´SELECT ´, _CAMPO, ´ FROM ´, _TABELA, ´ WHERE ´, _CAMPOWHERE, ´ = ´, _VALOR)

  PREPARE tab_dinamica FROM instrucao;
  EXECUTE tab_dinamica; 
  DEALLOCATE PREPARE tab_dinamica;


outro exeplo:

  instrucao = ´SELECT * FROM CLIENTES´

  PREPARE comando_sql FROM instrucao;
  EXECUTE comando_sql; 
  DEALLOCATE PREPARE comando_sql;



GOSTEI 0
POSTAR