PDA

View Full Version : خطا در استفاده از دستور DELETE در کلاس IN



Behrouz_Rad
چهارشنبه 16 اسفند 1385, 08:13 صبح
بنده از SP زیر برای تبدیل یک رشته که با کاراکتر "," از هم تفکیک شده اند برای مقادیر کلاس IN استفاده می کنم (البته میشه از UDF هم استفاده کرد):


CREATE PROCEDURE spGetFilesList
(
@list ntext,
@fileGroupID int,
@delimiter nchar(1) = N','
)
AS
BEGIN

CREATE TABLE #tblSplit
( listpos int IDENTITY(1, 1) NOT NULL,
str varchar(4000),
nstr nvarchar(2000)
)

DECLARE @pos int,
@textpos int,
@chunklen smallint,
@tmpstr nvarchar(4000),
@leftover nvarchar(4000),
@tmpval nvarchar(4000)

SET @textpos = 1
SET @leftover = ''
WHILE @textpos <= datalength(@list) / 2
BEGIN
SET @chunklen = 4000 - datalength(@leftover) / 2
SET @tmpstr = @leftover + substring(@list, @textpos, @chunklen)
SET @textpos = @textpos + @chunklen

SET @pos = charindex(@delimiter, @tmpstr)

WHILE @pos > 0
BEGIN
SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1)))
INSERT #tblSplit (str, nstr) VALUES(@tmpval, @tmpval)
SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr))
SET @pos = charindex(@delimiter, @tmpstr)
END

SET @leftover = @tmpstr
END

INSERT #tblSplit(str, nstr) VALUES (ltrim(rtrim(@leftover)), ltrim(rtrim(@leftover)))
--DELETE FROM tblFiles WHERE strFileName NOT IN(tblSplit.nstr) AND intFileGroup = @fileGroupID
SELECT O.* FROM tblfiles O, #tblSplit tblSplit WHERE O.intFileGroup = @fileGroupID AND O.strFileName IN (tblSplit.nstr)

END
GO


دستور DELETE رو فعلا غیر فعال کردم. در این دستور خطای عدم شناخت شی گرفته میشه.

?any idea

متشکرم.:لبخندساده:

whitehat
چهارشنبه 16 اسفند 1385, 13:31 عصر
(tblSplit.nstr) چیه ؟
(یک Select قبل از آن بگذارید)