SQL 2005 SELECT X VARIAVEL

USUARIO.EXCLUIDOS 04/12/2006 20:59:37
#187973
Amigos fiz uma procedure para retornar um recordset, so q queria passar o campo em q vai ser feita a busca.
ex.

Create procedure SelecionaCliente
@Campo nvarchar(30),
@Conteudo nvarchar(200)
as
Select clinome, clicontato from tabcliente @campo like @Conteudo

******** so q isso nao funciona.. alguem sabe como fazer esta procedure do sql .

Valeu pela ajuda...
USUARIO.EXCLUIDOS 05/12/2006 12:25:25
#188055
Ninguem ainda fez uma procedure dessa...
Com vb e access eu faco assim

select clinome, clicontato from tabcliente " & sCampo & " like '" & sconteudo & "'

e isso me poupa muitas linhas de codigo....

Alguma ideia?
JPC666 05/12/2006 17:27:42
#188159
tah faltando o WHERE...

RAMSES 05/12/2006 22:02:39
#188207
Resposta escolhida
Create procedure SelecionaCliente
@Campo nvarchar(30),
@Conteudo nvarchar(200)
as

DECLARE @Command nvarchar(4000)

SET='Select clinome, clicontato from tabcliente where ' + @campo + ' like ' + @Conteudo

EXEC sp_executesql @Command

Go

onde eu "monto" a string de consulta e depois uso o sp_executesql para fazer a consulta

qualquer coisa pergunta denovo
USUARIO.EXCLUIDOS 05/12/2006 23:06:01
#188210
Certo Ramses...

Acho q entendi a ideia... mas e essa sp_executesql como vc criou essa procedure ou ela ja e do sql.. pois o meu ainda da erro, aqui esta minha procedure

ALTER PROCEDURE SelecionaCliente
@Codigo int,
@Campo nvarchar(30),
@Conteudo nvarchar(200)

AS

Begin

IF @Codigo = 0
Begin
Select clicod, clicliente, clinfantasia, clicontato, cliie, clicnpj,
cliendereco, clibairro, climunicipio, cliuf, clicep, clitel1,
clitel2, clitel3, cliobs From tabCliente where cliCliente like @Conteudo + '%'
end
Else
Begin

DECLARE @Command nvarchar(4000)

set @Command = 'Select clicod, clicliente, clinfantasia, clicontato, cliie, clicnpj,
cliendereco, clibairro, climunicipio, cliuf, clicep, clitel1,
clitel2, clitel3, cliobs From tabCliente where ' + @Campo + ' = ' + @Codigo

EXEC sp_Executesql @Command

end
end

RAMSES 06/12/2006 10:44:25
#188290
muda
+ @Codigo
para
+ CHAR(39) + CONVERT(nvarchar,@Codigo) + CHAR(39)

pq ta erro qd tenta juntar int com um nvarchar e o CHAR(39) eh para colocar as aspas(')
USUARIO.EXCLUIDOS 06/12/2006 11:17:38
#188294
RamSes.. valeu mesmo pela ajuda q esta me dando.. mais ainda ta dando um erro

The name 'Select clicod, clicliente, clinfantasia, clicontato, cliie, clicnpj,cliendereco, clibairro, climunicipio, cliuf, clicep, clitel1, clitel2, clitel3, cliobs From tabCliente where clicliente = 'aaa'' is not a valid identifier.

Minha consulta esta assim

DECLARE @Command nvarchar(4000)

set @Command = 'Select clicod, clicliente, clinfantasia, clicontato, cliie, clicnpj,cliendereco, clibairro, climunicipio, cliuf, clicep, clitel1, clitel2, clitel3, cliobs From tabCliente where '+ @Campo + ' = ' + CHAR(39) + CONVERT(nvarchar,@Conteudo) + CHAR(39)


EXEC sp_executasql @Command


Aqui no Exec sp_executasql @Command eu posos mudar para EXEC @command?
RAMSES 06/12/2006 11:31:47
#188297
nao eh sp_executAsql eh sp_executEsql
sp_executesql eh um procedimento armazenado do sql que esta na base master, faz a mesma coisa que o EXEC,somente tem a diferenca que o executesql tem uma melhor performace(pq compila como se fosse uma SP normal) do que o exec sozinho
USUARIO.EXCLUIDOS 06/12/2006 13:29:24
#188322
Ramses... funcionou cara... valeu mesmo...

Precisando estamos ai... falow...
Tópico encerrado , respostas não são mais permitidas