O que há de errado?

05/02/2004

0

O que há de errado com essa procedure?

CREATE PROC INICIALIZA_PAGINACAO
@CHAVE VARCHAR(30),
@TEMPTB VARCHAR(20),
@TABELA VARCHAR(20),
@CONDICOES VARCHAR(100),
@CPORDEM VARCHAR(25),
@TPORDEM VARCHAR(6)
AS

IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @TEMPTB)
DROP TABLE @TEMPTB

SELECT IDENTITY(INT,1,1) IX, @CHAVE INTO @TEMPTB FROM @TABELA WHERE
@CONDICOES
ORDER BY @CPORDEM @TPORDEM

GO


Erros:

Server: Msg 170, Level 15, State 1, Procedure INICIALIZA_PAGINACAO, Line 11
Line 11: Incorrect syntax near ´@TEMPTB´.
Server: Msg 170, Level 15, State 1, Procedure INICIALIZA_PAGINACAO, Line 13
Line 13: Incorrect syntax near ´@TEMPTB´.


Tfabbri

Tfabbri

Responder

Posts

09/02/2004

Julio Diniz

Para poder fazer o vc quer, vc precisa usar o exec().

No lugar de usar drop table @Variavel use o seguinte:

exec ( ´drop table ´ + @Variavel )

No caso do select idem:

exec ( ´drop table ´ + @Variavel )

No caso de criar é a mesma coisa. Ex.:

declare
@tmp varchar(10),
@tmp2 varchar(10)

select
@tmp = ´dbo.teste´,
@tmp2 = ´dbo.teste2´

exec ( ´select * into ´ + @tmp2 + ´ From ´ + @tmp )

select * from teste2

Vale ressaltar q vc vai encontrar problemas com tabelas temporárias, se vc for criar desse jeito. Testei com tabelas físicas e funcionou,mas qdo fui criar uma tabela do tipo tralha ( #NomedaTabela ) deu erro.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar