117 lines
2.7 KiB
Transact-SQL
117 lines
2.7 KiB
Transact-SQL
CREATE PROCEDURE [dbo].[up_create_guild]
|
|
@guild_name nvarchar(20),
|
|
@character_id [uniqueidentifier],
|
|
@guild_id [uniqueidentifier],
|
|
@master_name nvarchar(16),
|
|
@cost_money int,
|
|
@server smallint,
|
|
@max_member int,
|
|
@group_id smallint
|
|
AS
|
|
BEGIN
|
|
|
|
SET NOCOUNT ON;
|
|
SET XACT_ABORT ON;
|
|
|
|
DECLARE @my_money int,
|
|
@error_code int,
|
|
@Class int,
|
|
@Level int,
|
|
@check_guild_id uniqueidentifier,
|
|
@check_character_id uniqueidentifier,
|
|
@check_member_id uniqueidentifier
|
|
|
|
SET @check_guild_id = NULL;
|
|
SET @check_character_id = NULL;
|
|
SET @check_member_id = NULL;
|
|
|
|
BEGIN TRY
|
|
|
|
BEGIN TRAN;
|
|
|
|
SET @error_code = 1;
|
|
|
|
SELECT @check_character_id = [character_id], @Class = [Class], @Level = [level], @my_money = [gold] FROM [dbo].[CharacterTable] WITH (READUNCOMMITTED) WHERE [character_id] = @character_id;
|
|
SELECT @check_guild_id = [guild_id] FROM GuildTable WITH (READUNCOMMITTED) WHERE [name] = @guild_name;
|
|
SELECT @check_member_id = [character_id] FROM GuildMemberTable WITH (READUNCOMMITTED) WHERE [character_id] = @character_id;
|
|
|
|
IF (@check_character_id IS NOT NULL) AND (@check_guild_id IS NULL) AND (@check_member_id IS NULL)
|
|
BEGIN
|
|
|
|
-- 돈 삭제 및 길드 설정
|
|
IF (@my_money - @cost_money) > 0
|
|
BEGIN
|
|
UPDATE [dbo].[CharacterTable] SET [gold] = (@my_money - @cost_money), [GuildID]=@guild_id WHERE [character_id] = @character_id
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE [dbo].[CharacterTable] SET [gold] = 0, [GuildID]=@guild_id WHERE [character_id] = @character_id
|
|
END
|
|
|
|
-- INSERT 길드 정보
|
|
INSERT INTO GuildTable
|
|
VALUES
|
|
( @guild_id, --0
|
|
@server,
|
|
@guild_name, --1
|
|
@character_id, --2 Master
|
|
0, --3 Exp
|
|
10000, --4 Point
|
|
4000100, --5 room_id
|
|
@max_member, --6 Max Member
|
|
'', --7 notice
|
|
'url', --8 icon
|
|
0, -- block_type
|
|
8191, -- permission01
|
|
2028, -- permission02
|
|
1920, -- permission03
|
|
1920, -- permission04
|
|
1920, -- permission05
|
|
1920, -- permission06
|
|
1920, -- permission07
|
|
0, -- permission08
|
|
1, -- level
|
|
@group_id,
|
|
0
|
|
);
|
|
|
|
-- INSERT 길드 멤버 정보
|
|
INSERT INTO GuildMemberTable
|
|
VALUES
|
|
( @guild_id,
|
|
@character_id,
|
|
@master_name,
|
|
'',
|
|
0,
|
|
@Class,
|
|
@Level,
|
|
GetDate()
|
|
);
|
|
|
|
--길드 창고 정보 추가
|
|
-- INSERT INTO tbl_Guild_Storage_Info VALUES (@guild_id, 1, 0, 0, 1)
|
|
|
|
SELECT ERROR_CODE = @error_code, * FROM GuildTable WITH (READUNCOMMITTED) WHERE guild_id = @guild_id
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
SET @error_code = -1
|
|
SELECT ERROR_CODE = @error_code;
|
|
|
|
END
|
|
|
|
COMMIT TRAN;
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
ROLLBACK TRAN;
|
|
|
|
SET @error_code = -1
|
|
SELECT ERROR_CODE = @error_code;
|
|
|
|
END CATCH
|
|
|
|
END
|