⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usp_inserttimesheet.sql

📁 Beginning VB.NET DatabasesAll_Code.rar
💻 SQL
字号:
CREATE  PROCEDURE usp_InsertTimeSheet
(
   @TimeSheetID      UNIQUEIDENTIFIER,
   @UserID           UNIQUEIDENTIFIER,
   @WeekEndingDate   DATETIME
)
AS

DECLARE @GroupID UNIQUEIDENTIFIER,
        @ProjectID UNIQUEIDENTIFIER,
        @TimeSheetDate DATETIME,
        @i TINYINT

-- Get the GroupID that the user belongs to
SELECT @GroupID = GroupID FROM Users WHERE UserID = @UserID

DECLARE Project_Cursor CURSOR FOR SELECT ProjectID 
   FROM GroupProjects WHERE GroupID = @GroupID

BEGIN TRANSACTION
   -- Insert the time sheet
   INSERT INTO TimeSheets
      (TimeSheetID, UserID, WeekEndingDate, Submitted, ApprovalDate,
      ManagerID, LastUpdateDate)
      VALUES(@TimeSheetID, @UserID, @WeekEndingDate, 0, NULL,
      NULL, GETDATE())
   IF @@ERROR <> 0 
      BEGIN
      ROLLBACK TRANSACTION
      RAISERROR('Insert into TimeSheets failed.',18,1)
      RETURN
      END

   -- Set the initial time sheet date to the beginning of the week
   SET @TimeSheetDate = @WeekEndingDate - 4

   -- Set up a loop to insert time sheet items for 5 days
   SET @i = 1
   WHILE (@i < 6)

      BEGIN
      -- Open the cursor
      OPEN Project_Cursor

      -- Get the first row of data from the cursor into our variable
      FETCH NEXT FROM Project_Cursor INTO @ProjectID

      WHILE @@FETCH_STATUS = 0
         BEGIN
         -- Insert the time sheet item
         INSERT INTO TimeSheetItems
         (TimeSheetItemID, TimeSheetID, ProjectID, Hours, TimeSheetDate)
            VALUES(NEWID(), @TimeSheetID, @ProjectID, 0, @TimeSheetDate)
         IF @@ERROR <> 0 
            BEGIN
            ROLLBACK TRANSACTION
            RAISERROR('Insert into TimeSheetItems failed.',18,1)
            RETURN
            END
         -- Get the next row of data from the cursor into our variable
         FETCH NEXT FROM Project_Cursor INTO @ProjectID
         END

      CLOSE Project_Cursor

      -- Increment the date by one day
      SET @TimeSheetDate = @TimeSheetDate + 1
      -- Increment the loop counter by one
      SET @i = @i + 1
      END

-- Deallocate cursor
DEALLOCATE Project_Cursor

-- Commit all inserts
COMMIT TRANSACTION

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -