sql-server - 如果结果存在则执行存储过程
问题描述
我想对现有的存储过程有一些帮助,我想从我有匹配记录的表[DVMT30_EVENT_PROCESSOR].[StateMachine].[Snapshots]
中获得输出,我们有匹配的记录CrossbarRouter = @CrossbarRouter
是存储过程的一部分,
我只想在[StateMachine].[UpdateSnapshots]
结果@OUT
集与@Crossbar
参数匹配时执行存储过程。
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;
推荐阅读
- python - model.predict 给出了 Tensorflow 错误 Inconsistent values for attr 'T' DT_INT16 vs. DT_FLOAT while building NodeDef using Op name=StridedSlice
- java - 如何遍历Java列表数组将对象键值对保存到自己的数组中
- swift - 如何在没有 PostgreSQL 时区的情况下将 Swift 日期或字符串转换为时间戳?
- python - IronPython 与 .net API 的集成
- java - 未找到 Java 类 iText
- python - 如何使用python从linkedin下载图像?
- ios - Flutter iOS build failed pod 文件错误:Podfile is out of date
- email - Mailkit 不使用凭据进行身份验证
- vue.js - 如何访问位于文件夹名称包含连字符的模块中的状态变量?
- scala - 复制 S3“文件夹”的最有效方法是什么?