Advertisement
Anaristos

inv_item stored procedure

Apr 10th, 2012
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 3.00 KB | None | 0 0
  1. USE [Equipment]
  2. GO
  3.  
  4. IF OBJECTPROPERTY(object_id('dbo.inv_additem_exp'), N'IsProcedure') = 1
  5. DROP PROCEDURE [dbo].[inv_additem_exp]
  6. GO
  7.  
  8. SET ANSI_NULLS ON
  9. GO
  10. SET QUOTED_IDENTIFIER ON
  11. GO
  12. -- =================================================
  13. -- Author:      Antonio F. Gomez
  14. -- Create date: 04/11/2011
  15. -- Modify date: 04/01/2012
  16. -- Description: Adds 1 item to the inventory table.
  17. -- =================================================
  18. CREATE PROCEDURE [dbo].[inv_additem_exp]
  19. (
  20.      @user nvarchar(16)
  21.     ,@item nvarchar(max)
  22. )
  23. AS
  24. BEGIN
  25.  
  26.     SET NOCOUNT ON;
  27.    
  28.     DECLARE  @ReturnCode int           = 0
  29.             ,@ErrorCode  int           = 0
  30.             ,@RowCount   int           = 0
  31.             ,@InTrans    tinyint       = 0
  32.             ,@Message    nvarchar(200) = N'inv_additem: '
  33.  
  34.     DECLARE  @count int
  35.             ,@table nvarchar(128) = N'[Equipment].[dbo].[Current Inventory ' + @user + N']'
  36.             ,@sql   nvarchar(max);
  37.  
  38.     EXEC @count = [Aardwolf].[dbo].[cd_is_user] @user;
  39.  
  40.     IF (@count != 1)
  41.         BEGIN
  42.             SET @ReturnCode  = -5
  43.             SET @Message    += N'one user with that name not found';
  44.             GOTO ProcError
  45.         END
  46.    
  47.     CREATE TABLE #item  (
  48.                             [ObjectID]    BIGINT        NOT NULL DEFAULT 0 PRIMARY KEY,
  49.                             [Flags]       INT           NOT NULL DEFAULT 0,
  50.                             [ItemFlags]   VARCHAR(16)   NOT NULL DEFAULT '',
  51.                             [Name]        VARCHAR(1024) NOT NULL DEFAULT '',
  52.                             [Display]     VARCHAR(1024) NOT NULL DEFAULT '',
  53.                             [Level]       TINYINT       NOT NULL DEFAULT 0,
  54.                             [Type]        TINYINT       NOT NULL DEFAULT 0,
  55.                             [Wear]        SMALLINT      NOT NULL DEFAULT 0,
  56.                             [Timer]       INT           NOT NULL DEFAULT -1,
  57.                             [ContainerID] BIGINT        NOT NULL DEFAULT 0
  58.                         )
  59.  
  60.     INSERT INTO #item EXEC [dbo].[getItem] @item;
  61.  
  62.     SET @sql  = N'BEGIN TRAN ';
  63.     SET @sql += N'MERGE ' + @table +  N' AS [T] USING #item AS [S] ';
  64.     SET @sql += N'ON ([T].[ObjectID] = [S].[ObjectID]) ';
  65.     SET @sql += N'WHEN NOT MATCHED BY TARGET ';
  66.     SET @sql += N'THEN INSERT ( [ObjectID], [Flags], [ItemFlags], [Name],';
  67.     SET @sql += N' [Display], [Level], [Type], [Wear], [Timer], [ContainerID] ) VALUES(';
  68.     SET @sql += N' [S].[ObjectID], [S].[Flags], [S].[ItemFlags],';
  69.     SET @sql += N' [S].[Name], [S].[Display], [S].[Level],';
  70.     SET @sql += N' [S].[Type], [S].[Wear], [S].[Timer],';
  71.     SET @sql += N' [S].[ContainerID] ) ';
  72.     SET @sql += N'WHEN MATCHED THEN UPDATE SET';
  73.     SET @sql += N' [T].[Flags]       = [S].[Flags] ';
  74.     SET @sql += N',[T].[ItemFlags]   = [S].[ItemFlags] ';
  75.     SET @sql += N',[T].[Name]        = [S].[Name] ';
  76.     SET @sql += N',[T].[Display]     = [S].[Display] ';
  77.     SET @sql += N',[T].[Level]       = [S].[Level] ';
  78.     SET @sql += N',[T].[Type]        = [S].[Type] ';
  79.     SET @sql += N',[T].[Wear]        = [S].[Wear] ';
  80.     SET @sql += N',[T].[Timer]       = [S].[Timer] ';
  81.     SET @sql += N',[T].[ContainerID] = [S].[ContainerID];';
  82.     SET @sql += N'COMMIT TRAN ';   
  83.  
  84.     EXEC sp_executesql @sql;
  85.  
  86.     SET @ReturnCode = @@ERROR;
  87.  
  88.     DROP TABLE #item;
  89.  
  90. ProcExit:
  91.     RETURN(@ReturnCode)
  92.  
  93. ProcError:
  94.     RAISERROR(@Message,16,1)
  95.     GOTO ProcExit
  96.  
  97. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement