我在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)之外,还有什么方法可以避免此错误吗?
答案 0 :(得分:0)
您可以将ID字段显式CAST
作为Int
IF @Type = 0
BEGIN
INSERT INTO dbo.MyTable (IntID)
SELECT CAST(ID AS INT)
FROM #Temp