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