دستور update میخوام که روی رکوردهایی که id برابر 2 یا 4 یا 5 یا .... بود عمل کنه
چون با آداپتر کار میکنم و تعداد اعداد هم تو برنامه مشخص میشه و ثابت نیست
پس باید بصورت یک رشته به آداپتر پاس بشه
ممنون
دستور update میخوام که روی رکوردهایی که id برابر 2 یا 4 یا 5 یا .... بود عمل کنه
چون با آداپتر کار میکنم و تعداد اعداد هم تو برنامه مشخص میشه و ثابت نیست
پس باید بصورت یک رشته به آداپتر پاس بشه
ممنون
دوست عزیز
شما میتونید از کد زیر در غالب یک استوردپراسیجر استفاده کنید:
DECLARE @UpdateItem int
SET @UpdateItem=1
DECLARE @SqlStr ASNVARCHAR(MAX)
SET @SqlStr=''
DECLARE @ID_Collection NVARCHAR(100)
SET @ID_Collection='2,3,4,5'
SET @SqlStr='UPDATE TableName
SET F1='+CAST(@UpdateItem ASNVARCHAR)+'WHERE Id IN ('+@ID_Collection+')'
EXEC(@SqlStr)
که شما مقادیر متغیر @ID_Collection را در برنامه خود به صورت داینامیک میسازید و به استوردپراسیجر خود پاس میدهید که من در اینجا مقدار این متغیر را به صورت ثابت گرفتم
موفق باشید
چون مقادیر ID شما مشخص نیست شما باید از Dynamic SQL استفاده کنین
CREATE PROCEDURE UpdateTbl @prm_ID VARCHAR(100)
AS
EXECUTE( 'UPDATE dbo.Categories
SET CategoryName = '' Test Word ''
WHERE CategoryID IN (' + @prm_ID + ')' )
EXECUTE UpdateTbl '4, 6'
آیا تو استوردپراسیجر میشه از for استفاده کنم و هربار مقادیری عوض کنم و بعد در بانک ثبت کنم؟
در SQL Server باید از Cursors استفاده کنیند (ترجیحا" اگر واقعا" مجبورید استفاده کنید چون کند میکنه)
نمونه
USE Northwind
GO
DECLARE @CategoryName varchar(15)
DECLARE authors_cursor CURSOR FOR
SELECT CategoryName FROM dbo.Categories
ORDER BY CategoryName
OPEN authors_cursor
FETCH NEXT FROM authors_cursor
INTO @CategoryName
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Test Category: ' + @CategoryName
FETCH NEXT FROM authors_cursor
INTO @CategoryName
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
GO