0

我在 SQL Server 2008 中有一个采用 int 参数 @Type int 的存储过程。

根据@Type 参数值,它在构建临时表#Temp 时做不同的处理。如果@Type = 0,我的 ID 列包含一个 int 值;如果@Type = 1,我的 ID 列包含一个唯一标识符。

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

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)之外,还有什么方法可以避免此错误?

4

1 回答 1

0

您可以明确地CAST将 ID 字段作为 Int

IF @Type = 0
BEGIN
    INSERT INTO dbo.MyTable (IntID)
    SELECT CAST(ID AS INT)
    FROM #Temp
于 2013-09-05T20:18:24.463 回答