Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如果结果存在,则执行存储过程_Sql Server_Stored Procedures - Fatal编程技术网

Sql server 如果结果存在,则执行存储过程

Sql server 如果结果存在,则执行存储过程,sql-server,stored-procedures,Sql Server,Stored Procedures,我想在现有存储过程中获得一些帮助,我想从中获得一个输出,其中我有表[DVMT30\u EVENT\u PROCESSOR].[StateMachine].[Snapshots]中的匹配记录,其中CrossbarRouter=@CrossbarRouter是存储过程的一部分 仅当@OUT结果集与@Crossbar参数匹配时,我才希望执行存储过程[StateMachine].[UpdateSnapshots] SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON

我想在现有存储过程中获得一些帮助,我想从中获得一个输出,其中我有表
[DVMT30\u EVENT\u PROCESSOR].[StateMachine].[Snapshots]
中的匹配记录,其中
CrossbarRouter=@CrossbarRouter
是存储过程的一部分

仅当
@OUT
结果集与
@Crossbar
参数匹配时,我才希望执行存储过程
[StateMachine].[UpdateSnapshots]

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

DECLARE @OUT NVARCHAR(100); 

CREATE PROCEDURE [StateMachine].[UpdateSnapshots] 
    @SystemName [NVARCHAR](128), 
    @IntrestingEvents VARCHAR(128), 
    @StateMachine_JSON [NVARCHAR](MAX),
    @StateMachine_Object [NVARCHAR](MAX),
    @CrossbarRouter VARCHAR(128)
AS
    SET @OUT = (SELECT [CrossbarRouter] 
                FROM [DVMT30_EVENT_PROCESSOR].[StateMachine].[Snapshots] 
                WHERE CrossbarRouter = @CrossbarRouter)

    IF EXISTS (SELECT * FROM [DVMT30_EVENT_PROCESSOR].[StateMachine].[Snapshots] 
               WHERE SystemName = @SystemName)
        UPDATE [DVMT30_EVENT_PROCESSOR].[StateMachine].[Snapshots]
        SET IntrestingEvents = @IntrestingEvents, 
            StateMachine_JSON = @StateMachine_JSON, 
            StateMachine_Object = @StateMachine_Object, 
            CrossbarRouter = @CrossbarRouter
        WHERE SystemName = @SystemName;
    ELSE
        INSERT INTO [DVMT30_EVENT_PROCESSOR].[StateMachine].[Snapshots] (SystemName, IntrestingEvents, StateMachine_JSON, StateMachine_Object, CrossbarRouter)
        VALUES (@SystemName, @IntrestingEvents, @StateMachine_JSON, @StateMachine_Object, @CrossbarRouter);
GO

如果没有匹配项,您可以返回:

SELECT @OUT = [CrossbarRouter] 
    FROM [DVMT30_EVENT_PROCESSOR].[StateMachine].[Snapshots] 
    WHERE CrossbarRouter = @CrossbarRouter

IF @OUT IS NULL 
    RETURN 0;