sql >> データベース >  >> RDS >> Sqlserver

ストアド プロシージャの結果を変数で取得できませんか?

    これが役立つ可能性があります -

    1.

    CREATE PROCEDURE [dbo].[proc_tblUserScheduleNewUpdateOnly]
    (
          @Scheduleid BIGINT
        , @Contactid UNIQUEIDENTIFIER
        , @ScheduleDate DATETIME
        , @StartTime VARCHAR(20)
        , @EndTime VARCHAR(20)
        , @Location BIGINT
        , @Area BIGINT
        , @Room BIGINT
        , @Enddate DATETIME
        , @CurrentTime DATETIME
        , @ModifiedBy UNIQUEIDENTIFIER
        , @schedulefileidNew BIGINT
    )
    AS BEGIN
    
        UPDATE dbo.tblUserScheduleNew
        SET     
              Contactid = @Contactid 
            , ScheduleDate = @ScheduleDate 
            , StartTime = @StartTime 
            , EndTime = @EndTime 
            , location = @Location 
            , Area = @Area 
            , Room = @Room 
            , LastModifiedDate = @CurrentTime 
            , EndDate = @Enddate 
            , ModifiedBy = @ModifiedBy 
            , ScheduleFileId = NULLIF(@schedulefileidNew, 0)
        WHERE ScheduleID = @Scheduleid 
            AND IsDeleted = 0
            AND isActive = 1
    
        RETURN 1
    
    END
      

    2.

    CREATE PROCEDURE [dbo].[proc_tblUserScheduleNewFutureUpdate] 
    (
          @StartDatePassed DATETIME
        , @EndDatePassed DATETIME
        , @StartTimePassed VARCHAR(20)
        , @EndTimePassed VARCHAR(20)
        , @CurrentDateTime DATETIME
        , @Scheduleid BIGINT
        , @Contactid UNIQUEIDENTIFIER
        , @Location BIGINT
        , @Area BIGINT
        , @Room BIGINT
        , @ModifiedBy UNIQUEIDENTIFIER
        , @schedulefileidNew BIGINT
    )
    AS BEGIN
    
        IF 
              CONVERT(DATE, @StartDatePassed, 101) > CONVERT(DATE, @CurrentDateTime, 101) 
            AND
              CONVERT(DATE, @EndDatePassed, 101) > CONVERT(DATE, @CurrentDateTime, 101) 
            AND
              CONVERT(DATE, @EndDatePassed, 101) > CONVERT(DATE, @StartDatePassed, 101)
    
        BEGIN    
    
            DECLARE @ResultForInsertUpdate VARCHAR(200)
    
            EXEC @ResultForInsertUpdate = dbo.proc_tblUserScheduleNewUpdateOnly 
                    @Scheduleid
                ,   @Contactid
                ,   @StartDatePassed
                ,   @StartTimePassed
                ,   @EndTimePassed
                ,   @Location
                ,   @Area
                ,   @Room
                ,   @EndDatePassed
                ,   @CurrentDateTime
                ,   @ModifiedBy
                ,   @schedulefileidNew
    
            RETURN @ResultForInsertUpdate
    
        END
        ELSE BEGIN
    
            RETURN 2
    
        END
    
    END
      

    3.

    CREATE PROCEDURE proc_tblUserScheduleNewUpdateWithAllRoomsOption 
    (
        @StartDatePassed DATETIME,
        @EndDatePassed DATETIME,
        @StartTimePassed VARCHAR(20),
        @EndTimePassed VARCHAR(20),
        @CurrentDateTime DATETIME,
        @Scheduleid BIGINT,
        @Contactid UNIQUEIDENTIFIER,
        @Location BIGINT,
        @Area BIGINT,
        @Room BIGINT,
        @ModifiedBy UNIQUEIDENTIFIER,
        @schedulefileidNew BIGINT,
        @OldStartDate DATETIME,
        @OldEndDate DATETIME,
        @OldStartTime VARCHAR(20),
        @OldEndTime VARCHAR(20),
        @OldContactid UNIQUEIDENTIFIER,
        @OldLocation BIGINT,
        @OldArea BIGINT,
        @OldRoom BIGINT
    )
    AS BEGIN
    
        DECLARE 
              @row_count INT
            , @intFlag INT = 0
            , @locationIdForLoop BIGINT
            , @AreaIdForLoop BIGINT
            , @RoomIdForLoop BIGINT
            , @ResultForInsertUpdate INT = 1
    
        CREATE TABLE #tempTable (RowNum INT, LocationId BIGINT, AreaId BIGINT, RoomId BIGINT)
    
        IF @Area = 0 AND @Room = 0 BEGIN
    
            INSERT INTO #tempTable (RowNum, LocationId, AreaId, RoomId)
            SELECT
                    ROW_NUMBER() OVER (ORDER BY LocationId DESC) RowNum
                ,   LocationId
                ,   AreaId
                ,   RoomId
            FROM dbo.tblroomnew a
            WHERE a.AreaId IN (
                SELECT b.AreaId
                FROM dbo.tblareanew b
                WHERE b.LocationId = @Location
            )
    
            SELECT 
                  @row_count = COUNT(1) 
                , @intFlag = 1
            FROM #tempTable
    
            WHILE (@intFlag <= @row_count) BEGIN
    
                SELECT 
                      @locationIdForLoop = LocationId
                    , @AreaIdForLoop = AreaId
                    , @RoomIdForLoop = RoomId
                FROM #tempTable
                WHERE [email protected]
    
                IF @ResultForInsertUpdate = 1 BEGIN
                    IF EXISTS (
                        SELECT 1
                        FROM dbo.tbluserschedulenew
                        WHERE 
                            CONVERT(DATETIME,ScheduleDate,101)=CONVERT(DATETIME,@OldStartDate,101) AND
                            CONVERT(DATETIME,EndDate,101)=CONVERT(DATETIME,@OldEndDate,101) AND
                            CONVERT(TIME,StartTime,108)=CONVERT(TIME,@OldStartTime,108) AND
                            CONVERT(TIME,EndTime,108)=CONVERT(TIME,@OldEndTime,108) AND [email protected]
                            AND [email protected] 
                            AND [email protected] 
                            AND [email protected]
                    )
                    BEGIN
    
                        PRINT 'Update First record'
                        EXEC @ResultForInsertUpdate=proc_tblUserScheduleNewFutureUpdate 
                                @StartDatePassed
                            ,   @EndDatePassed
                            ,   @StartTimePassed
                            ,   @EndTimePassed
                            ,   @CurrentDateTime
                            ,   @Scheduleid
                            ,   @Contactid
                            ,   @locationIdForLoop
                            ,   @AreaIdForLoop
                            ,   @RoomIdForLoop
                            ,   @ModifiedBy
                            ,   @schedulefileidNew
    
                        RETURN @ResultForInsertUpdate
    
                    END
                    ELSE
                    BEGIN
    
                        EXEC proc_tblUserScheduleNewLatestInsert    
                                @Contactid
                            ,   @StartDatePassed
                            ,   @StartTimePassed
                            ,   @EndTimePassed
                            ,   @locationIdForLoop
                            ,   @AreaIdForLoop
                            ,   @RoomIdForLoop
                            ,   @EndDatePassed
                            ,   @ModifiedBy
                            ,   0
                            ,   @CurrentDateTime
    
                    END
                END
                ELSE BEGIN
    
                    RETURN @ResultForInsertUpdate
    
                END
                SELECT @intFlag = @intFlag + 1
            END
        END
        ELSE
        BEGIN
            IF @Area != 0 AND @Room = 0 BEGIN
    
                INSERT INTO #tempTable (RowNum, LocationId, AreaId, RoomId)
                SELECT
                        ROW_NUMBER() OVER (ORDER BY LocationId DESC) RowNum
                    ,   LocationId
                    ,   AreaId
                    ,   RoomId
                FROM dbo.tblroomnew a
    
                SELECT @row_count = COUNT(1)
                FROM #tempTable
    
            END
            ELSE BEGIN
    
                EXEC dbo.proc_tblUserScheduleNewFutureUpdate 
                            @StartDatePassed
                        ,   @EndDatePassed
                        ,   @StartTimePassed
                        ,   @EndTimePassed
                        ,   @CurrentDateTime
                        ,   @Scheduleid
                        ,   @Contactid
                        ,   @location
                        ,   @Area
                        ,   @Room
                        ,   @ModifiedBy
                        ,   @schedulefileidNew
            END
    
        END
    
    END
      


    1. PostgreSQL:count()またはカウンターを保持しますか?

    2. Chrome拡張機能からDBに接続しますか?

    3. ClusterControl1.8.2の新しいユーザーとLDAP管理

    4. MySQLの厳密モードを無効にする必要がありますか?