[英]Operand type clash: uniqueidentifier is incompatible with int in query
[英]Operand type clash: uniqueidentifier is incompatible with int
當我嘗試在下面創建存儲過程時,出現以下錯誤:
操作數類型沖突:uniqueidentifier與int不兼容
我不清楚導致此錯誤的原因。 UserID實際上是我所有表中的int。 有人可以告訴我我做錯了什么嗎?
create procedure dbo.DeleteUser(@UserID int)
as
delete from [aspnet_Membership] where UserId = @UserID
delete from [Subscription] where UserID = @UserID
delete from [Address] where UserID = @UserID
delete from [User] where UserID = @UserID
go
在我看來,至少這些表之一已將UserID
定義為uniqueidentifier
,而不是int
。 您是否檢查了每個表中的數據? 每個表中的SELECT TOP 1 UserID FROM
產生什么? 一個int
還是GUID
?
編輯
我認為您已經基於包含名為UserID的列的所有表構建了一個過程。 我認為您不應該在腳本中包含aspnet_Membership
表,因為它實際上不是“您的”表之一。
如果您打算圍繞aspnet_Membership
數據庫設計表,那么當該表明確為UserID
列使用uniqueidentifier
時,為什么其余的aspnet_Membership
int
呢?
如果要通過視圖訪問此視圖,請嘗試sp_recompile
或刷新視圖。
sp_recompile
:
使存儲過程,觸發器和用戶定義的函數在下次運行時重新編譯。 它是通過從過程高速緩存中刪除現有計划來強制下一次運行該過程或觸發器時創建一個新計划的。 在SQL Server Profiler集合中,記錄了事件SP:CacheInsert而不是事件SP:Recompile。
爭論
[ @objname= ] 'object'
當前數據庫中存儲過程,觸發器,表,視圖或用戶定義函數的合格或不合格名稱。 對象是nvarchar(776),沒有默認值。 如果object是存儲過程,觸發器或用戶定義函數的名稱,則存儲過程,觸發器或函數將在下次運行時重新編譯。 如果object是表或視圖的名稱,則所有引用該表或視圖的存儲過程,觸發器或用戶定義的函數都將在下次運行時重新編譯。
返回碼值
0(成功)或非零數字(失敗)
備注
sp_recompile
僅在當前數據庫中查找對象。
存儲過程或觸發器使用的查詢以及用戶定義的函數僅在編譯時才進行優化。 當對數據庫進行影響統計的索引或其他更改時,編譯的存儲過程,觸發器和用戶定義的函數可能會降低效率。 通過重新編譯作用在表上的存儲過程和觸發器,可以重新優化查詢。
原因是數據與數據類型不匹配。 我遇到了我忘記使字段匹配的相同問題。 盡管我的情況與您的情況不同,但它顯示了類似的錯誤消息。
情況是我復制了一個表,但是偶然地我拼錯了一個字段,因此在創建數據庫后使用ALTER
對其進行了ALTER
。 並且兩個表中的字段順序都不相同。 因此,當我使用INSERT INTO TableName SELECT * FROM TableName
,結果顯示類似的錯誤: Operand type clash: datetime is incompatible with uniqueidentifier
這是一個類似的示例:
use example
go
create table Test1 (
id int primary key,
item uniqueidentifier,
inserted_at datetime
)
go
create table Test2 (
id int primary key,
inserted_at datetime
)
go
alter table Test2 add item uniqueidentifier;
go
--insert into Test1 (id, item, inserted_at) values (1, newid(), getdate()), (2, newid(), getdate());
insert into Test2 select * from Test1;
select * from Test1;
select * from Test2;
錯誤消息是:
Msg 206, Level 16, State 2, Line 24
Operand type clash: uniqueidentifier is incompatible with datetime
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.