检查临时表中是否存在列在SQL Server中始终返回false
||
我有以下执行语句,该语句创建一个表(使用来自另一个过程的数据),将这些值插入一个临时表中,添加一个图像列(因为它们不能包含在分组中),然后根据另一个条件根据其更新临时表(结果表字段在SSRS报表中使用,因此我需要保留IMAGE数据类型):
EXEC (\'SELECT \' + @COL_TO_GROUP_BY + @COL_ADDITONAL + @sColVals + \' INTO
#RESULTS_TABLE from (\' + @SQL_STATEMENT + \') A \' + @WHERE_CLAUSE + \' GROUP BY \' +
@COL_TO_GROUP_BY +
\' ALTER TABLE #RESULTS_TABLE
ADD IMAGE_DATA IMAGE
IF EXISTS(SELECT * FROM tempdb.INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME =
\'\'COLUMN_A\'\' and TABLE_NAME LIKE \'\'#RESULTS_TABLE%\'\')
BEGIN
UPDATE #RESULTS_TABLE
SET IMAGE_DATA = FILE_DATA
FROM #RESULTS_TABLE A, #IMAGE_TABLE B
WHERE A.COLUMN_A = B.COLUMN_A
END
SELECT * FROM #RESULTS_TABLE\')
问题在于,无论是否存在COLUMN_A,IMAGE_DATA的列始终为NULL。还有其他方法可以将数据获取到IMAGE_DATA列中吗?请帮忙!
注意:我将不接受任何可得出结论,认为该问题与其他表中的内容有关,尤其是WHERE子句中的内容。我已经进行了多次验证,以确保条件可以为真和为假(匹配的行,没有匹配的行等)。因此,这排除了条件语句。谢谢。
编辑:
我仍然不确定是什么确切原因,但是我最终创建了一个全局临时表并运行了两个单独的过程,现在看来一切正常。我必须接受最接近我自己的解决方案的答案。所有答案和评论都非常可行。谢谢!
没有找到相关结果
已邀请:
3 个回复
款去芳尾脊
痰降锭骂奸
不是
的正确名称。您的代码将在安装了区分大小写的排序规则的服务器上中断。始终对所有数据库名称使用适当的大小写。如果在区分大小写的部署下运行,您的代码可能会在结果列名称上类似地中断,例如ѭ3。 并发下的逻辑不正确:会话A将看到会话B的#temp表并执行不正确的操作。 一个简单的测试显示这些列是可见的: 。
此测试表明该列已更新,因此对EXISTS的检查成功。显而易见的结论是,在您的情况下,#RESULTS_TABLE和#IMAGE_TABLE之间的“ 5”联接找不到任何匹配项,这是一个完全取决于表内容的问题。 编辑 您可以使ѭ3成为动态的,但在测试时仍然可以正常工作:
壬驴拿歪竞