none
Erro em query dinâmica dentro de SP RRS feed

  • Pergunta

  • Pessoal,

     

    Estou com um problema com uma procedure que faz uma consulta dinâmica utilizando um valor que vem de um parâmetro.

     

    Dêem uma olhada:

     

    Code Snippet

    DECLARE @SQL VARCHAR(MAX)

    DECLARE @valor VARCHAR(MAX)

    SET @valor = 'fernando'

    SET @sql = 'select * from tabela i where i.nome= '+@valor

    execute(@SQL)

     

     

    O erro é : Invalid column name: fernando

     

    Obrigado desde já!

     

    Fernando Gomes

    terça-feira, 13 de janeiro de 2009 17:53

Respostas

  • Boa Tarde,

     

    Se o comando abaixo não é válido:

     

    Code Snippet
    select
    * from tabela i where i.nome= Fernando

     

    Ele não é válido porque faltam as aspas e por essa mesma razão o seu batch não é válido. É preciso colocar as aspas. Ex:

     

    Code Snippet

    DECLARE @SQL VARCHAR(MAX)

    DECLARE @valor VARCHAR(MAX)

    SET @valor = 'fernando'

    SET @sql = 'select * from tabela i where i.nome= '+ '''' + @valor + ''''

    execute(@SQL)

     

     

    [ ]s,

     

    Gustavo Maia Aguiar

    http://gustavomaiaaguiar.spaces.live.com

     

     

    terça-feira, 13 de janeiro de 2009 18:23
  • Fernando,

     

    Tente assim:

     

    Code Snippet

    DECLARE @SQL VARCHAR(MAX)

    DECLARE @valor VARCHAR(MAX)

    SET @valor = 'fernando'

    SET @sql = 'select * from tabela i where i.nome= '+''''+@valor+''''

    execute(@SQL)

     

     

    terça-feira, 13 de janeiro de 2009 18:27

Todas as Respostas

  • Boa Tarde,

     

    Se o comando abaixo não é válido:

     

    Code Snippet
    select
    * from tabela i where i.nome= Fernando

     

    Ele não é válido porque faltam as aspas e por essa mesma razão o seu batch não é válido. É preciso colocar as aspas. Ex:

     

    Code Snippet

    DECLARE @SQL VARCHAR(MAX)

    DECLARE @valor VARCHAR(MAX)

    SET @valor = 'fernando'

    SET @sql = 'select * from tabela i where i.nome= '+ '''' + @valor + ''''

    execute(@SQL)

     

     

    [ ]s,

     

    Gustavo Maia Aguiar

    http://gustavomaiaaguiar.spaces.live.com

     

     

    terça-feira, 13 de janeiro de 2009 18:23
  • Fernando,

     

    Tente assim:

     

    Code Snippet

    DECLARE @SQL VARCHAR(MAX)

    DECLARE @valor VARCHAR(MAX)

    SET @valor = 'fernando'

    SET @sql = 'select * from tabela i where i.nome= '+''''+@valor+''''

    execute(@SQL)

     

     

    terça-feira, 13 de janeiro de 2009 18:27
  • Valeu pessoal!

     

    Funcionou exatamente como eu precisava!

     

    Abs,

     

    Fernando Gomes

     

    terça-feira, 13 de janeiro de 2009 18:33