当临时表可以有多种类型时,操作数类型冲突

时间:2013-09-05 20:15:53

标签: sql sql-server sql-server-2008 stored-procedures if-statement

我在SQL Server 2008中有一个存储过程,它接受一个int参数@Type int。

基于@Type参数值,它在构建临时表#Temp时执行不同的处理。如果@Type = 0,我的ID列包含一个int值;如果@Type = 1,我的ID列包含uniqueidentifier。

在存储过程中,我有选择地插入表中:

IF @Type = 0
BEGIN
    INSERT INTO dbo.MyTable (IntID)
    SELECT ID
    FROM #Temp
END
ELSE
BEGIN
    SELECT ID 
    FROM #Temp
END

dbo.MyTable中的IntID列是一个int列。当我用@Type = 1调用存储过程时,我收到以下错误:

Operand type clash: uniqueidentifier is incompatible with int

除了将dbo.MyTable中的int列更改为其他内容(varchar)之外,还有什么方法可以避免此错误吗?

1 个答案:

答案 0 :(得分:0)

您可以将ID字段显式CAST作为Int

IF @Type = 0
BEGIN
    INSERT INTO dbo.MyTable (IntID)
    SELECT CAST(ID AS INT)
    FROM #Temp
相关问题