好的,我有一个可能是一个非常容易的问题,你在那里的Sql大师......
给定一种类型的布尔值T,我想用数据集A填充临时表,如果T为真,或者如果T为假则填充数据集B. 我以为这将是如何做到的:
DECLARE @foo INT
SET @foo = null
IF (@foo is null)
BEGIN
SELECT 'foo was null' INTO #TempTable
END
ELSE
BEGIN
SELECT 'foo not null' INTO #TempTable
END
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我收到一条错误,上面写着"数据库中已经存在一个名为'#TempTable'的对象."
显然,在评估条件之前,Sql试图在每种情况下创建表...?这对我来说似乎很奇怪,但没关系...但是这样做的正确方法是什么?
编辑:我在Sql Server中,但我怀疑这是一个更普遍的问题......但如果我错了,请告诉我.
为什么不使用基于集合而不是程序解决方案:
SELECT CASE WHEN @foo is null
THEN 'foo was null'
ELSE 'foo not null'
END AS result
INTO #TempTable
Run Code Online (Sandbox Code Playgroud)