我已經跟隨即時通訊程序的SQL Server:SQL幫助在程序中聲明
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」。
但是沒有不正確的語法。
陌生人,如果我刪除它的一些工作原理。 I.E:
'6663225047,1122675730,1591119304,1664930592'
工作正常!
任何意識?
不知道錯誤,但你的過程不是很安全。嘗試讀取參數化的SQL和SQL注入。 – 2010-12-10 12:58:18