插入的SQL Server存储过程(如果不存在)并返回特定属性(列值)

时间:2018-04-18 14:00:48

标签: sql-server stored-procedures return-value microsoft-flow

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

到目前为止,我有这个:

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为空/空
  3. 没有现有记录
  4. 我希望在情况1中,存储过程返回ColumnValueToReturn值,并且在情况2和& 3它返回一个自定义值(0或任何字符串)。

    有人可以建议这样做吗?

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

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

    亲切的问候

1 个答案:

答案 0 :(得分: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