这可能是一个愚蠢的问题,但我还没有找到方法来说明这个问题以获得适合我想要完成的答案。我可能只是有一个愚蠢的时刻。
我有一个sproc的输入变量;输入变量可以作为null传递。
如果值为null,我想在临时表中插入另一个表中的值列表。否则,我只想在参数表中插入参数值。
我尝试做的事情是这样的
INSERT INTO @tempTable
SELECT (CASE WHEN @myVariable IS NULL
THEN (SELECT [myVariable] FROM myTable)
ELSE @myVariable END)
这不会起作用,因为选择语句会收回大量结果(并且它的结果不正确),但这是一般的想法。我基本上想要一个可选参数,用户可以在其中指定特定ID,或者取回所有ID。
有没有人对最佳方法有任何建议?
谢谢!
答案 0 :(得分:2)
我认为这个UNION会做
INSERT INTO @tempTable
SELECT @myVariable WHERE @myVariable IS NOT NULL
UNION
SELECT [myVariable] FROM myTable WHERE @myVariable IS NULL
当然,如果它不是一个查询 - 你可以使用简单的IF逻辑
IF @myVariable IS NULL
INSERT INTO @tempTable
SELECT [myVariable] FROM myTable
ELSE
INSERT INTO @tempTable
SELECT @myVariable
答案 1 :(得分:1)
这样的事情对你有用吗?
SELECT DISTINCT ISNULL(@myVariable, myVariableColumn)
FROM myTable
答案 2 :(得分:0)
我建议这个查询:
INSERT INTO @tempTable
SELECT CASE WHEN @myVariable IS NULL Then [myVariable] else @myVariable end FROM myTable