SQL 如果不存在则插入的服务器存储过程和 returns 特定 属性(列值)

SQL Server stored procedure that inserts if not exist and returns a specific property (column value)

我有一个存储过程,可以在记录不存在时插入该记录,但我想对其进行一些调整。我希望存储过程 return 列的值。

到目前为止我有这个:

BEGIN
   IF NOT EXISTS (SELECT * 
                  FROM tableName
                  WHERE DATALENGTH(ColumnValueToReturn) = 0
                    AND property = @property ...)
   BEGIN
       INSERT INTO tableName (...)
       VALUES (...)
   END
END

我很困惑,不确定这里的最佳选择是什么,有 3 种情况:

  1. 已有记录+ColumnValueToReturn不为空
  2. 已有一条记录 + ColumnValueToReturn 是 NULL/Empty
  3. 没有现有记录

我希望在情况 1 中,存储过程 return 是 ColumnValueToReturn 值,在情况 2 和 3 中,它 return 是自定义值(0 或任何字符串).

任何人都可以建议这样做的方法吗?

请注意,这是在 Microsoft Flow (https://flow.microsoft.com/en-us/) 中使用的,因此有时会有一些限制。

感谢大家的帮助或建议!

亲切的问候

if exists (SELECT 1 FROM tableName
                  WHERE datalength(**ColumnValueToReturn**)=0
                  AND property = @property ...)

select ColumnValueToReturn FROM tableName WHERE datalength(**ColumnValueToReturn**)=0
                  AND property = @property ...
else  
begin     
 INSERT INTO tableName (...)
 VALUES (...)
 select defaultvalue
end