PDA

View Full Version : Sp Delete,حذف اطلاعات یک مجموعه IN



ali643
پنج شنبه 11 مرداد 1386, 23:11 عصر
سلام دوستان

یک جدول دارم که می خوام اطلاعات درونش رو با یه SP پاک کنم
Script جدول


CREATE TABLE [dbo].[tbl_Groups](
[Group_ID] [int] IDENTITY(1,1) NOT NULL,
[Group_Name] [nvarchar](50) NULL
) ON [PRIMARY]


وقتی که SP زیر را می نویسم و Exec می کنم برای یک رکورد درست جواب می ده و رکورد رو Delete می کنه اما وقتی برا مجموعه ای از رکورد ها می خوام استفاده کنم مشکل داره



ALTER PROCEDURE [dbo].[sptbl_GroupsDelete]
@Group_ID nvarchar (300)
AS
DELETE FROM tbl_Groups WHERE Group_ID IN (@Group_ID)
go


کد خطا


Msg 245, Level 16, State 1, Procedure sptbl_GroupsDelete, Line 7
Conversion failed when converting the nvarchar value '62,63' to data type int.

اما وقتی با استفاده از SP زیر این کارو انجام می دهم مشکلی وجود نداره و فقط مشکل SQL INjection داره که اونم میشه از طریق برنامه نویسی مشکلش رو حل کرد.



ALTER PROCEDURE [dbo].[sptbl_GroupsDelete]
@Group_ID nvarchar (300)
AS
DECLARE @strsql NVARCHAR(400)
SET @strsql = 'DELETE FROM tbl_Groups WHERE Group_ID IN ('+@Group_ID+')'
EXEC sp_executesql @strsql
go

با استفاده از این کد Sql Injection به وجود می آد.


exec sptbl_GroupsDelete '60); select * from tbl_groups --'


حالا من می خوام بدونم که مشکل SP اول چی هست که نمی تونه اطلاعات رو پاک کنه؟؟


مرسی.

AminSobati
پنج شنبه 11 مرداد 1386, 23:41 عصر
http://www.sommarskog.se/arrays-in-sql.html