stored procedure dinâmica
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!!!
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
Curtidas 0
Respostas
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
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
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
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