Logo Hardware.com.br
villasmas
villasmas Membro Senior Registrado
341 Mensagens 0 Curtidas

Como usar variável no from? - SQL Server

#1 Por villasmas 01/11/2005 - 10:54
Olá galera,

Seguinte, to com um probleminha no SQL Server 2000.
Quero dar um select no sysobjects e declarar um cursor para esse select.
Depois, dentro de um while/fech pegar os nomes das tabelas um a um e copiar os dados delas...

Mais ou menos assim

DECLARE @nome_tabela sysname
DECLARE tabelas CURSOR
FOR
SELECT name
FROM sysobjects
WHERE xtype = 'U'

OPEN tabelas
FECH NEXT FROM tabelas INTO @nome_tabela
WHILE @@FETCH_STATUS = 0
BEGIN
...


O problema é quando eu tento usar a @nome_tabela...

Só pra efeito de teste fiz isso
DECLARE @nome_tabela sysname
SET @nome_tabela = 'sysobjects'

SELECT * FROM @nome_tabela


Aí ele diz que precisa declarar @nome_tabela....

Se alguém puder dar uma "mãozinha", agradeço...

Abraços,
Kakao
Kakao Super Participante Registrado
645 Mensagens 23 Curtidas
#2 Por Kakao
01/11/2005 - 13:34
Para mim funcionou assim:
use master
DECLARE @nome_tabela sysname
DECLARE tabelas CURSOR
FOR
SELECT name
FROM sysobjects
WHERE xtype = 'U'

OPEN tabelas
FEtCH NEXT FROM tabelas INTO @nome_tabela
WHILE @@FETCH_STATUS = 0
BEGIN
print @nome_tabela
FEtCH NEXT FROM tabelas INTO @nome_tabela
end
close tabelas
deallocate tabelas

Note que no código que você postou faltava o t do FETCH. Pode ser que seja isso.
Kakao
Kakao Super Participante Registrado
645 Mensagens 23 Curtidas
#3 Por Kakao
01/11/2005 - 15:05
use meu_db
DECLARE @nome_tabela sysname
declare @consulta varchar(100)
DECLARE tabelas CURSOR
FOR
SELECT name
FROM sysobjects
WHERE xtype = 'U'
order by name

OPEN tabelas
FEtCH NEXT FROM tabelas INTO @nome_tabela
WHILE @@FETCH_STATUS = 0
BEGIN
set @consulta = 'select * from ' + @nome_tabela
execute (@consulta)
FEtCH NEXT FROM tabelas INTO @nome_tabela
end
close tabelas
deallocate tabelas
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal