Справка по SQL в процедуре IN - PullRequest
0 голосов
/ 10 декабря 2010

Я выполняю процедуру в SQL Server:

      alter procedure sp_selectfFriends_by_cities
        (
            @txt_id_usuarios varchar(300)
        )
        as
        begin
        declare @sql varchar(300)
        set @sql = 'select
                     a.int_id_usuario, 
                     a.int_id_cidade,
                     b.txt_nome_cidade,
                     b.txt_nome_estado 
                     from
                      tb_cidades_visitadas a 
                      left join 
                      tb_cidades 

      b on b.int_id_cidade = a.int_id_cidade
 where int_id_usuario in (' + @txt_id_usuarios + ')'
                execute(@sql) 
        end

Где @txt_id_usuarios - список пользователей, разделенных запятыми, а поле int_id_usuario - тип BIGINT. то есть:

'6663225047,1122675730,1591119304,1664930592,1685923789,100000235882380,100000292471037,100000466411115'

Когда я пытаюсь выполнить его, передавая эту строку в качестве параметра, он возвращает мне следующее сообщение об ошибке: Неверный синтаксис рядом с '1685923789'.

Но НЕТ неправильного синтаксиса.

Незнакомец, если я уберу некоторые идентификаторы, это работает. То есть:

'6663225047,1122675730,1591119304,1664930592'

Работает отлично!

Есть идеи?

1 Ответ

4 голосов
/ 10 декабря 2010

Да

объявить @sql varchar (300)

Это ограничит вашу строку до 300 символов. Вы должны сделать это длиннее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...