我有SP来更新我的数据库中的数据.. 我的存储过程如下:
ALTER PROCEDURE [dbo].[updatesms] @KodeTingkat INT,
@KodeKel INT,
@KodeTPS INT,
@SuaraPartai INT,
@KodeCaleg1 INT = -1,
@SuaraCaleg1 INT = -1,
@KodeCaleg2 INT = -1,
@SuaraCaleg2 INT = -1,
@KodeCaleg3 INT = -1,
@SuaraCaleg3 INT = -1,
@KodeCaleg4 INT = -1,
@SuaraCaleg4 INT = -1,
@KodeCaleg5 INT = -1,
@SuaraCaleg5 INT = -1,
@KodeCaleg6 INT = -1,
@SuaraCaleg6 INT = -1,
@KodeCaleg7 INT = -1,
@SuaraCaleg7 INT = -1,
@KodeCaleg8 INT = -1,
@SuaraCaleg8 INT = -1,
@KodeCaleg9 INT = -1,
@SuaraCaleg9 INT = -1,
@KodeCaleg10 INT = -1,
@SuaraCaleg10 INT = -1,
@KodeCaleg11 INT = -1,
@SuaraCaleg11 INT = -1
AS
BEGIN
SET NOCOUNT ON;
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE TPSSet
SET SuaraPartai=@SuaraPartai
WHERE TPS_Kelurahan = @KodeKel
AND TPSS = @KodeTPS
IF @KodeCaleg1 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan = @SuaraCaleg1
WHERE Code = @KodeCaleg1
AND Caleg_TPS IN (
SELECT id
FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
IF @KodeCaleg2 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg2
WHERE Code = @KodeCaleg2
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
IF @KodeCaleg3 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg3
WHERE Code = @KodeCaleg3
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
IF @KodeCaleg4 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg4
WHERE Code = @KodeCaleg4
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
IF @KodeCaleg5 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg5
WHERE Code = @KodeCaleg5
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
IF @KodeCaleg6 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg6
WHERE Code = @KodeCaleg6
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
IF @KodeCaleg7 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg7
WHERE Code = @KodeCaleg7
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
IF @KodeCaleg8 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg8
WHERE Code = @KodeCaleg8
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
IF @KodeCaleg9 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg9
WHERE Code = @KodeCaleg9
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
IF @KodeCaleg10 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg10
WHERE Code = @KodeCaleg10
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
IF @KodeCaleg11 > 0
BEGIN
SELECT Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg11
WHERE Code = @KodeCaleg11
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS )
END
END
我的问题: 如果SET @ KodeTingkat = 1存储过程正在努力更新SuaraPartai,@ SuaraCaleg1,@ SuaraCaleg2直到@ SuaraCaleg11
如果SET @ KodeTingkat = 2或SET @ KodeTingkat = 3,则存储过程无法更新以上.. 所以,请帮忙..
我使用此命令调用函数存储过程更新:
BEGIN TRANSACTION
EXEC updatesms 1,1,1,300,1,80,2,30,3,70,4,50,5,60,6,50,7,25,8,800
COMMIT
描述:
这是我的架构关系:
使用下面答案中的代码来测试存储过程外的执行... 像这样开头的代码:
------ ALTER PROCEDURE [dbo].[updatesms]
DECLARE
@KodeTingkat INT,
@KodeKel INT,
@KodeTPS INT,
@SuaraPartai INT,
@KodeCaleg1 INT = -1,
@SuaraCaleg1 INT = -1,
@KodeCaleg2 INT = -1,
@SuaraCaleg2 INT = -1,
@KodeCaleg3 INT = -1,
@SuaraCaleg3 INT = -1,
@KodeCaleg4 INT = -1,
@SuaraCaleg4 INT = -1,
@KodeCaleg5 INT = -1,
@SuaraCaleg5 INT = -1,
@KodeCaleg6 INT = -1,
@SuaraCaleg6 INT = -1,
@KodeCaleg7 INT = -1,
@SuaraCaleg7 INT = -1,
@KodeCaleg8 INT = -1,
@SuaraCaleg8 INT = -1,
@KodeCaleg9 INT = -1,
@SuaraCaleg9 INT = -1,
@KodeCaleg10 INT = -1,
@SuaraCaleg10 INT = -1,
@KodeCaleg11 INT = -1,
@SuaraCaleg11 INT = -1
------ AS
SET @KodeTingkat=1
----SET @KodeTingkat=2
----SET @KodeTingkat=3
SET @KodeKel=1
SET @KodeTPS=1
SET @SuaraPartai=300
SET @KodeCaleg1=1
SET @SuaraCaleg1=80
SET @KodeCaleg2=2
SET @SuaraCaleg2=30
SET @KodeCaleg3=3
SET @SuaraCaleg3=70
SET @KodeCaleg4=4
SET @SuaraCaleg4=50
SET @KodeCaleg5=5
SET @SuaraCaleg5=60
SET @KodeCaleg6=6
SET @SuaraCaleg6=50
SET @KodeCaleg7=7
SET @SuaraCaleg7=25
SET @KodeCaleg8=8
SET @SuaraCaleg8=800
BEGIN
SET NOCOUNT ON;
-- suara partai
DECLARE @Kelurahans_ID INT
SELECT @Kelurahans_ID = Id
FROM Kelurahans
WHERE Kelurahan_Tingkatan = @KodeTingkat
;
PRINT 'A) @Kelurahans_ID is set to ' + STR(@Kelurahans_ID) + ', reading ' + STR(@@rowcount) + ' rows.'
UPDATE TPSSet SET SuaraPartai=@SuaraPartai
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS
;
PRINT 'B) SuaraPartai is set to ' + STR(@SuaraPartai) + ', reading ' + STR(@@rowcount) + ' rows.'
-- suara caleg 1
IF @KodeCaleg1 > 0
BEGIN
PRINT 'C) Just before update of Calegs, for Code=@KodeCaleg1, which = ' + STR(@KodeCaleg1)
;
UPDATE Calegs
SET JumlahPerolehan=@SuaraCaleg1
WHERE Code = @KodeCaleg1
AND Caleg_TPS IN (
SELECT id FROM TPSSet
WHERE TPS_Kelurahan = @KodeKel AND TPSS = @KodeTPS AND [TPSSet].[TPS_Kelurahan] = @Kelurahans_ID
)
;
PRINT 'D) Updated Calegs for Code=@KodeCaleg1, which = ' + STR(@KodeCaleg1) + '; processing ' + STR(@@rowcount) + ' rows.'
END
-- suara caleg 2
.
.
.
使用该代码,这里是示例输出,如果我设置@KodeTingkat = 1
(注意:重复...processing 1 rows
)
现在这里是示例输出,如果我设置@KodeTingkat = 2
(注意:...processing 0 rows
重复)
答案 0 :(得分:0)