Kill Death transfer

09/01/2014 14:21 SnickQ#1
Hello
I try wirte query for update kills for player, but i have some errors
Code:
USE PS_GameData
DECLARE @CharID INT = (Select CharID FROM PS_GameData.dbo.Chars),
        @Oldk1 INT = (SELECT K1 FROM PS_GameData.dbo.Chars WHERE Slot = '0'), 
        @Newk1 INT = (SELECT K1 FROM PS_GameData.dbo.Chars WHERE Slot = '1') 
BEGIN
UPDATE PS_GameData.dbo.chars
Set K1 = @Oldk1 + @Newk1
WHERE UserUID ='1' and slot = '1'
END
I need that for KD quest
Anyone can help me? ;C

Error:
Code:
Msg 512, Level 16, State 1, Line 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Msg 515, Level 16, State 2, Line 6
Cannot insert the value NULL into column 'K1', table 'PS_GameData.dbo.Chars'; column does not allow nulls. UPDATE fails.
The statement has been terminated.
09/01/2014 14:51 nubness#2
You're doing a lot of things wrong.

First of all, you're assigning most likely a bunch of values to the @CharID variable (every CharID in your Chars table).

Here's what you could use (just coded and tested):
Code:
USE PS_GameData

DECLARE @FromCharName VARCHAR(24) = 'Fury'
DECLARE @ToCharName VARCHAR(24) = 'Turbo'

DECLARE @FromCharID INT = (SELECT TOP 1 CharID FROM Chars WHERE CharName = @FromCharName)
DECLARE @ToCharID INT = (SELECT TOP 1 CharID FROM Chars WHERE CharName = @ToCharName)

DECLARE @FromK1 INT = (SELECT K1 FROM Chars WHERE CharID = @FromCharID)
DECLARE @ToK1 INT = (SELECT K1 FROM Chars WHERE CharID = @ToCharID)

UPDATE Chars
SET K1 = @FromK1 + @ToK1
WHERE CharID = @ToCharID

UPDATE Chars
SET K1 = 0
WHERE CharID = @FromCharID

IF @@ERROR = 0
BEGIN
	
	PRINT CAST(@FromK1 AS VARCHAR(10)) + ' kills successfully transfered from ' + @FromCharName + ' to ' + @ToCharName
	
	DECLARE @NewToK1 INT = @FromK1 + @ToK1
	
	PRINT @ToCharName + ' has ' + CAST(@NewToK1 AS VARCHAR(10)) + ' kills.'
	
END
ELSE
BEGIN
	
	UPDATE Chars
	SET K1 = @FromK1
	WHERE CharID = @FromCharID
	
	UPDATE Chars
	SET K1 = @ToK1
	WHERE CharID = @ToCharID
	
	PRINT 'An error occured while transferring the kills. The changes have been reverted.'
	
END
09/01/2014 15:11 SnickQ#3
Thanks alot Nubness :))