Ir para conteúdo

POWERED BY:

Arquivado

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

trankilis

Problema

Recommended Posts

Boa tarde Drs.!! Lá vem eu novamente com duvidas, acredito que ainda muito simples.

 

Seguinte,

 

Eu tenho uma tabela diferente para cada arquivo que utilizo semanalmente.

Por exemplo para o arquivo XYZ eu possuo a tabela XYZ, para o arquivo ABC tem a tabela ABC.

 

Nessas tabelas existem algumas colunas em comum, como DDD e Telefone.

 

O que queria saber se existe a possibilidade de ao executar uma SP, dizer a ela, qual tabela que ela deve utilizar

Por exemplo:

CODE

create procedure corrige_tel

@tabela as varchar

 

AS

 

declare tel cursor for

select telefone

from @tabela

 

Ao executar comando como esse ele retorna um erro:

Server: Msg 137, Level 15, State 2, Procedure corrige_tel, Line 25

Must declare the variable '@tabela'.

 

Como eu poderia fazer isso?

 

Essa foi minha idéia, vocês tem outras sugestões de como se fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vamos por partes

 

Primeiro erro na sua proc eh q você nao passou o parametro "tabela".

tinha q executar ela assim:

 

exec corrige_tel 'tabela'

 

Segundo erro eh q você abriu um cursor e nao fez nada com ele :(

 

faz assim ó:

 

create procedure corrige_tel
@tabela as varchar

AS

select telefone from @tabela

go

 

e para executar:

 

exec corrige_tel 'tabela'

 

sim, tem q ser entre aspas simples^^

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vamos por partes

 

Primeiro erro na sua proc eh q você nao passou o parametro "tabela".

tinha q executar ela assim:

 

exec corrige_tel 'tabela'

 

Segundo erro eh q você abriu um cursor e nao fez nada com ele :(

 

faz assim ó:

 

create procedure corrige_tel
@tabela as varchar

AS

select telefone from @tabela

go

Sim entendo o que você quis dizer. Mas acho que me expressei mal.

 

Eu colei aqui apenas um pedaço da SP. que é onde se localiza o erro

 

e para executar:

 

exec corrige_tel 'tabela'

 

sim, tem q ser entre aspas simples^^

 

Abçs

Compreendo o que você quis dizer Jus2ka, acho que não fui muito claro ao abrir o post, vou tentar explicar novamente,

 

Eu colei aqui apenas um pedaço da SP, que é onde se localiza o erro.

Eu tenho varias tabelas

Tabela1

Tabela2

Tabela3

 

Todas tem esses campos em comum "Telefone" e "DDD"

E esses campos tem "sujeira", por exemplo

DDD  Telefone
---- ----------
11   1234-5678
1	1236-9876
(11) 32166549

Eu tenho que remover esses "-", "()" etc.

Então ao invés de criar uma SP para cada tabela, o que eu queria era, criar uma unica SP, onde ao executar essa SP eu fornecesse o nome da tabela em que ela iria trabalhar.

Tive a idéia de criar um cursor fazendo um select na @variavel que iria conter o nome da tabela.

 

Assim no momento da execução da SP, eu iria já fornecer o nome da tabela

Exemplo:

EXEC limpa_sujeira Tabela1

 

Portanto, eu fiz dessa forma:

 

[/code]

create procedure corrige_tel

 

@tabela varchar(50)

 

AS

 

declare tel cursor for

select telefone

from @tabela

 

fetch next from @tabela

into @tel, @ddd

 

while @@fetch_status = 0

begin

(

Comandos

)

end

[/code]

Mas o SQL, como informei na abertura do post apresenta erro naquele trecho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trankilis, você tem alguma chave nesta sua tabela?!

Se tiver podemos montar um cursor rapido e facil ^^

 

abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trankilis, você tem alguma chave nesta sua tabela?!

Se tiver podemos montar um cursor rapido e facil ^^

 

abçs

Não jus2ka.

Mas eu consegui resolver isso utilizando tabela temporaria e para conseguir indicar a tabela que eu gostaria de trabalhar utilizei o comando sp_executesql

 

Ficou mais ou menos assim:

create procedure telefone 

@tabela as varchar(50)

AS

declare @sqlcmd nvarchar(1000)

set @sqlcmd = 'Update ' +	  @tabela		 + ' Set telefone = Replace(histddd1,Original,New)
From '	   + @tabela +	  ' b inner join #tbltemp on  b.histddd1 Like '%'+ Tbl.Original + '%' '

exec master.dbo.sp_executesql @sqlcmd

Obrigado pela ajuda e até as próximas ^^

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.