[英]SQL Server - update multiple records using a stored procedure
作為一個超級新手,請提供一些指導。
我需要比較兩組數據並用一個值更新一組數據。 到目前為止,這就是我所擁有的。
PROCEDURE [dbo].[update_personnel_rank]
AS
DECLARE @frsid VARCHAR
DECLARE @officerid VARCHAR
DECLARE @hrrank VARCHAR
DECLARE @personnelrank VARCHAR
DECLARE @farank VARCHAR
DECLARE @rank VARCHAR(150)
SET @rank = 'Admin Spec II'
BEGIN
SET NOCOUNT ON;
SELECT
@frsid = hr.FRSID,
@officerid = p.OfficerID,
@hrrank = hr.Rank,
@personnelrank = p.Rank,
@farank = r.FA_Rank
FROM
[FireApp_REPL_DW_Data].[dbo].[MCFRSCombinedPersonnelandPimsStaff] hr
INNER JOIN
[fh_reports].[dbo].[personnel_bk] p ON p.OfficerID = hr.FRSID
INNER JOIN
[fh_reports].[dbo].[Rank_Lookup_tbl] r ON r.FA_Rank = hr.Rank
WHERE
(p.rank <> hr.Rank OR p.rank = '')
AND p.Rank = @rank
UPDATE [fh_reports].[dbo].[personnel_bk]
SET Rank = @farank
WHERE OfficerID = @officerid
END
GO
select查詢返回3條記錄,並且該存儲過程運行無任何錯誤,但不會更新記錄。 由於select查詢返回3條記錄,我想我需要相應地更改參數設置,但不確定如何...
就@Sami而言,如果您不返回這些變量,則無需設置它們,而只需運行更新即可:
USE [YourDatabase]
GO
SET NOCOUNT ON
GO
ALTER PROCEDURE [dbo].[update_personnel_rank]
@rank VARCHAR(150) --= 'Admin Spec II'
AS
BEGIN
IF @rank IS NULL OR @rank = ''
RAISERROR('Please enter a valid rank string.', 16, 1)
UPDATE hr
SET [Rank] = r.FA_Rank
FROM [FireApp_REPL_DW_Data].[dbo].[MCFRSCombinedPersonnelandPimsStaff] [hr]
INNER JOIN [fh_reports].[dbo].[personnel_bk] [p]
ON [p].[OfficerID] = [hr].[FRSID]
INNER JOIN [fh_reports].[dbo].[Rank_Lookup_tbl] [r]
ON [r].[FA_Rank] = [hr].[Rank]
WHERE [p].[rank] <> [hr].[Rank]
AND ([p].[Rank] = @rank OR p.[Rank] = '')
END ;
GO
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.