我正在寻找一种更有效的方法来完成这项任务.我需要设置一个等于ID的变量(如果存在),如果不存在,则将变量设置为插入的标识.我可以通过执行以下操作来实现此目的:
@VariableName --sent through to stored procedure DECLARE @VariableID [int] IF EXISTS(SELECT VariableID FROM VariableTable WHERE VariableName = @VariableName) SET @VariableID = (SELECT VariableID FROM VariableTable WHERE VariableName = @VariableName) ELSE INSERT INTO VariableTable(VariableName) VALUES(@VariableName) SET @VariableID = SCOPE_IDENTITY(); END
但是,运行相同的查询两次似乎效率低下(检查是否存在以及是否设置了变量)
只是寻找更好的方法来完成这项任务的建议.
解决方法
试试:
DECLARE @VariableID [int] SELECT @VariableID=VariableID FROM VariableTable WHERE VariableName = @VariableName IF @VariableID IS NULL BEGIN INSERT INTO VariableTable(VariableName) VALUES(@VariableName) SET @VariableID = SCOPE_IDENTITY(); END