0

我有一个存储过程,如果它不存在则插入一条记录,但我想稍微调整一下。我希望存储过程返回列的值。

到目前为止,我有这个:

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 中,存储过程返回ColumnValueToReturn值,在案例 2 和 3 中,它返回自定义值(0 或任何字符串)。

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

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

感谢大家的任何帮助或建议!

亲切的问候

4

1 回答 1

1
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 
于 2018-04-18T14:16:10.780 回答