我爲2或3或4或'n'個用戶名傳遞一個密碼值。動態更新SQL中的列值
如何將user_id動態地傳遞給更新查詢?
update user_table
set column_password = 'password value'
where user_id in ()
我爲2或3或4或'n'個用戶名傳遞一個密碼值。動態更新SQL中的列值
如何將user_id動態地傳遞給更新查詢?
update user_table
set column_password = 'password value'
where user_id in ()
首先使用此代碼創建函數:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[SplitIDs]
(
@List varchar(5000)
)
RETURNS
@ParsedList table
(
ID int
)
AS
BEGIN
DECLARE @ID varchar(10), @Pos int
SET @List = LTRIM(RTRIM(@List))+ ','
SET @Pos = CHARINDEX(',', @List, 1)
IF REPLACE(@List, ',', '') <> ''
BEGIN
WHILE @Pos > 0
BEGIN
SET @ID = LTRIM(RTRIM(LEFT(@List, @Pos - 1)))
IF @ID <> ''
BEGIN
INSERT INTO @ParsedList (ID)
VALUES (CAST(@ID AS int)) --Use Appropriate conversion
END
SET @List = RIGHT(@List, LEN(@List) - @Pos)
SET @Pos = CHARINDEX(',', @List, 1)
END
END
RETURN
END
GO
然後在存儲過程declate @UserIDs varchar(max)
。你將傳遞逗號分隔的ID列表到這個參數中。
然後在你的存儲過程,你可以有:
update U
set U.column_password = 'password value'
FROM dbo.SplitIDs(@UserIDs) I
INNER JOIN user_table U ON I.ID=U.user_id
只是一個想法。如果這已經存在於存儲過程中,那麼很可能您已經通過select語句獲得了user_id。我會做這樣的事情。
update user_table
set column_password = 'password value'
where user_id in (select user_id from table
where criteria = '')
。在我的場景中,user_id是動態傳遞的。 user_id的號碼將會改變 – goofyui
您好,我們將根據子查詢的結果處理任何數量的user_id,無論這個數字是100萬還是任何數字。我相信從我上面看到你的評論,儘管你可能正在尋找別的東西。 –
創建一個函數
CREATE FUNCTION [dbo].[FnSplit]
(
@List nvarchar(2000),
@SplitOn nvarchar(5)
)
RETURNS @RtnValue table (Id int identity(1,1), Value nvarchar(100))
AS
BEGIN
While(Charindex(@SplitOn,@List)>0)
Begin
Insert Into @RtnValue (value)
Select Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1)))
Set @List = Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List))
End
Insert Into @RtnValue (Value)
Select Value = ltrim(rtrim(@List))
Return
END
存儲過程
CREATE Procedure usp_Multipleparameter (@Users VARCHAR(1000)= NULL)
AS
BEGIN
update user_table
set column_password = 'password value'
where user_id collate database_default IN (SELECT Value FROM dbo.FnSplit(@Users,','))
END
GO
調用存儲過程
EXEC usp_Multipleparameter 'User1,User2'
謝謝@MuhammedAli – goofyui
Tesco表示「Every Little Helps」大聲笑:) –
這是存儲過程還是其他? – Joe
它在存儲過程中 – goofyui
這個值是如何在參數中傳入存儲過程的?什麼是@param的示例值? – Joe