J'ai procédure im suivi SQL Server:SQL Aide dans la procédure dans l'instruction
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
Où @txt_id_usuarios est une liste d'utilisateurs séparés par des virgules, et le int_id_usuario de champ est le type de BIGINT. -à-dire:
'6663225047,1122675730,1591119304,1664930592,1685923789,100000235882380,100000292471037,100000466411115'
Lorsque je tente de l'exécuter en passant cette chaîne comme paramètre, il me retourne suivre erreur: syntaxe incorrecte près de « 1685923789 ».
Mais il n'y a AUCUNE syntaxe incorrecte. Plus étrange si j'enlève des ID cela fonctionne. I.E:
'6663225047,1122675730,1591119304,1664930592'
Fonctionne bien!
Un idéias?
Vous n'êtes pas sûr de l'erreur, mais votre proc n'est pas très sécurisé. Essayez de lire une injection sql et sql paramétrée. –