decomp DBCServer_Release and inspect/document database
This commit is contained in:
parent
4b267cbe05
commit
7834b98bf0
28222 changed files with 843300 additions and 144 deletions
114
decomp/schema/RustyHearts/procs/up_insert_guild_skill.sql
Normal file
114
decomp/schema/RustyHearts/procs/up_insert_guild_skill.sql
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
CREATE PROCEDURE [dbo].[up_insert_guild_skill]
|
||||
(
|
||||
@guild_id [uniqueidentifier],
|
||||
@learn_user_id [uniqueidentifier],
|
||||
@skill_table_id int,
|
||||
@skill_id int,
|
||||
@skill_level tinyint,
|
||||
@learn_cost int,
|
||||
@is_update tinyint -- 0 이면 INSERT, 1 이면 UPDATE
|
||||
)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
DECLARE @check_user_id UNIQUEIDENTIFIER;
|
||||
DECLARE @check_user_gold INT;
|
||||
DECLARE @old_skill_id INT;
|
||||
DECLARE @guild_gold INT;
|
||||
DECLARE @result_code INT;
|
||||
|
||||
SET @check_user_gold = 0;
|
||||
SET @check_user_id = NULL;
|
||||
SET @check_user_gold = 0;
|
||||
SET @old_skill_id = NULL;
|
||||
SET @guild_gold = 0;
|
||||
SET @result_code = 1;
|
||||
|
||||
BEGIN TRY
|
||||
|
||||
BEGIN TRAN;
|
||||
|
||||
SELECT TOP 1 @check_user_id=[character_id], @check_user_gold=[gold] FROM CharacterTable WITH (READUNCOMMITTED) WHERE [character_id] = @learn_user_id;
|
||||
SELECT TOP 1 @old_skill_id = [skill_id] FROM dbo.tbl_Guild_Skill WITH (READUNCOMMITTED) WHERE [guild_id]=@guild_id and [skill_id]=@skill_id;
|
||||
IF( (@check_user_id IS NOT NULL) AND (@check_user_gold >= @learn_cost) )
|
||||
BEGIN
|
||||
-- UPDATE 요청일 경우
|
||||
IF 1 = @is_update
|
||||
BEGIN
|
||||
|
||||
IF @old_skill_id IS NULL
|
||||
BEGIN
|
||||
|
||||
-- 길드 스킬이 이미 존재하지 않다면 에러 전달
|
||||
SET @result_code = -3;
|
||||
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
|
||||
UPDATE dbo.tbl_Guild_Skill SET
|
||||
[skill_table_id] = @skill_table_id,
|
||||
[skill_level] = @skill_level,
|
||||
[skill_learn_time] = GETDATE()
|
||||
WHERE [guild_id]=@guild_id AND [skill_id]=@skill_id
|
||||
|
||||
END
|
||||
|
||||
END
|
||||
-- INSERT 요청 처리
|
||||
ELSE
|
||||
BEGIN
|
||||
|
||||
IF @old_skill_id IS NULL
|
||||
BEGIN
|
||||
|
||||
INSERT INTO tbl_Guild_Skill ( [guild_id], [skill_table_id], [skill_id], [skill_level], [skill_learn_time] )
|
||||
VALUES ( @guild_id, @skill_table_id, @skill_id, @skill_level, GETDATE() )
|
||||
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
|
||||
-- 길드 스킬이 존재 한다면 에러 전달
|
||||
SET @result_code = -2;
|
||||
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
-- 비용 차감
|
||||
IF 1 = @result_code
|
||||
BEGIN
|
||||
DECLARE @result_gold INT;
|
||||
SET @result_gold = (@check_user_gold - @learn_cost);
|
||||
IF( @result_gold < 0 )
|
||||
BEGIN
|
||||
SET @result_gold = 0;
|
||||
END
|
||||
|
||||
UPDATE [dbo].[CharacterTable] SET [gold] = @result_gold WHERE [character_id] = @learn_user_id
|
||||
END
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
|
||||
-- 프로시저 조건 검사 실패
|
||||
SET @result_code = -5;
|
||||
|
||||
END
|
||||
|
||||
COMMIT TRAN;
|
||||
|
||||
SELECT result_code = @result_code; --결과 코드 전달
|
||||
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
|
||||
ROLLBACK TRAN;
|
||||
|
||||
SELECT result_code = -1;
|
||||
|
||||
END CATCH
|
||||
END
|
||||
Loading…
Add table
Add a link
Reference in a new issue