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;