Ir para conteúdo

Arquivado

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

Aloysio Coutinho

montar query dinâmica

Recommended Posts

Olá pessoALL,

Estou com dificuldades para montar uma query dinâmica. Será que vocês poderiam me ajudar?

É o seguinte:

Estou armazenando em uma variável o nome de uma tabela que consigo extrair de uma query:

set @r_table = (select r_table from S_QOS_DATA where table_id = 119);

A variável @r_table é alimentada como "RN_QOS_DATA_0002". Agora quero criar uma outra variável que conterá a composição de uma nova query que irá utilizar esta variável no nome da tabela:

set @query = CONCAT('select COUNT(*) from ' + @r_table + ' where sampletime < ''2016-09-30 00:00:00''');

E, por fim, gostaria de executar esta query que, teoricamente, está contida na variável @query que teria a seguinte montagem:

select COUNT(*) from RN_QOS_DATA_0002 where sampletime < '2016-09-30 00:00:00'

Mas, não está funcionando conforme eu esperava.
Se dou um "select @query" após a montagem, o seu conteúdo é o número zero "0". :(

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá boa tarde, se você está inserindo o @ dizendo assim para o compilador que ali vai um parâmetro, então por que você fecha e abre aspas simples antes dele?

Boa tarde e, antes de mais nada, obrigado pelo retorno.

Porque se eu não isolar ele, ele é tratado como uma constante. A variável @query passa a ter o seguinte conteúdo:

'select COUNT(*) from @r_table where sampletime < \'2016-09-30 00:00:00\''. Ela não está sendo interpretada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este problema eu resolvi.
Estava seguindo o padrão MSSQL, quando no MySql a concatenação se faz com vírgulas "," e não com sinais de soma "+".
Foi só trocar estes caracteres que a montagem funcionou.
Agora, preciso criar uma procedure que irá ler o parâmetro "table_id" de um tabela.
O cursor seria montado no seguinte select: select table_id from s_qos_data.

Alguém pode me ajudar?

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.