Advertisement
Guest User

Untitled

a guest
Jan 12th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.77 KB | None | 0 0
  1. ALTER PROC [dbo].[manage_table] @serverID VARCHAR(100), @servername VARCHAR(1000)
  2. AS
  3.  
  4. DECLARE @idtest VARCHAR(100), @count INT;
  5. DECLARE @nametest VARCHAR(100), @oldname VARCHAR(100), @newname VARCHAR(100);
  6. SET @servername = 'tbl' + @servername;
  7. SELECT @idtest = (SELECT ServerID FROM tblServerID WITH (NOLOCK) WHERE ServerID = @serverID)
  8. SELECT @nametest = (SELECT ServerName FROM tblServerID WITH (NOLOCK) WHERE ServerID = @serverID)
  9.  
  10.  
  11. /*Handler to create table if no entry exists for serverid and name. If servername is null, its safe to create table based off servername. */
  12. IF (OBJECT_ID(@servername) IS NULL) AND (@idtest IS NULL) AND (@nametest IS NULL)
  13. BEGIN
  14. EXECUTE ('USE db_discord CREATE TABLE ' + @servername + '( EntryID INT IDENTITY (1,1), UserChannel VARCHAR(100), UserName VARCHAR(100), UserID VARCHAR(20), UserMessage VARCHAR(1000), MessageTime DATETIME)');
  15. INSERT INTO tblServerID (ServerID, ServerName)
  16. VALUES (@serverid, @servername);
  17. END
  18.  
  19. /*Handler to create table and assign it a unique name if there is no ID entry in the routing table, but there is already a table named after servername*/
  20. ELSE IF OBJECT_ID(@servername) IS NOT NULL AND @idtest IS NULL
  21. BEGIN
  22. SET @count = 2
  23. SET @newname = @servername
  24.         WHILE OBJECT_ID(@newname) IS NOT NULL
  25.         BEGIN
  26.             SET @newname = @servername
  27.             SET @newname = @newname + (CONVERT(VARCHAR,@count))
  28.             SET @count = @count + 1
  29.         END
  30. EXECUTE ('USE db_discord CREATE TABLE ' + @newname + '( EntryID INT IDENTITY (1,1), UserChannel VARCHAR(100), UserName VARCHAR(100), UserID VARCHAR(20), UserMessage VARCHAR(1000), MessageTime DATETIME)');
  31. INSERT INTO tblServerID (ServerID, ServerName)
  32. VALUES (@serverid, @newname);
  33. END
  34.  
  35. /*Handler to rename a server if it already has an entry ID but servername has changed. Also checks to make sure the new name is not already in use.*/
  36. ELSE IF(OBJECT_ID(@servername) IS NULL) AND @idtest IS NOT NULL
  37. BEGIN
  38.     SELECT @oldname = (SELECT ServerName FROM tblServerID WITH (NOLOCK) WHERE ServerID = @serverID)
  39.     SET @newname = @servername
  40.     EXEC sp_rename @oldname, @newname
  41.     UPDATE tblServerID
  42.     SET ServerName = @newname
  43.     WHERE ServerID = @serverID;
  44. END
  45.  
  46. /*If all of the above checks fail, give the server a new unique name and update the routing table. This shouldn't exist, but i'm paranoid.*/
  47. ELSE IF OBJECT_ID(@servername) IS NOT NULL AND @idtest IS NOT NULL AND @nametest NOT LIKE '%' + @servername + '%'
  48. BEGIN
  49.     SET @count = 2
  50.     SET @newname = @servername
  51.     SET @oldname = @nametest
  52.  
  53.         WHILE OBJECT_ID(@newname) IS NOT NULL
  54.         BEGIN
  55.             SET @newname = @servername
  56.             SET @newname = @newname + (CONVERT(VARCHAR,@count))
  57.             SET @count = @count + 1
  58.         END
  59.  
  60.     EXEC sp_rename @oldname, @newname
  61.     UPDATE tblServerID
  62.     SET ServerName = @newname
  63.     WHERE ServerID = @serverID;
  64. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement