記錄:執行參數爲表變量的sp的寫法,報錯:操作數類型衝突:table 與 UserDefineTable不兼容。

Declare @tb table(a int)

insert into @tb

select '1'

 

exec sp @tb

 

20190809  一次遇到的報錯:在SQLSERVER2008下提示:操作數類型衝突:table 與 UserDefineTable不兼容。

SQLSERVER 添加用戶自定義表類型

一、自定義表類型的創建

CREATE type dbo.UserDefineTable as table
(
  material varchar(40) null,
  quantity numeric(18,4) null)
go

二、作爲存儲過程參數的傳遞。

自定義表類型作爲存儲過程的參數時,需要在後面加readonly。

示例如下:

create procedure dbo.up_test

   @DefineTable UserDefineTable readonly 

as

begin

   --具體操作代碼

end

三、調用帶有自定義表參數的存儲過程。

傳遞的變量必須是自定義的表變量,如上方所示,下面的調用方法是可以的

declare @define_table UserDefineTable

insert into @define_table (material,quantity) select 'm01',10 union all select 'm02',20 union all select 'm03',33

exec up_test @define_table

而這一個的調用是不通過的

declare @define_table table(material varchar(40) null,quantity numeric(18,4) null)

insert into @define_table(material,quantity) select 'm01',10 union all select 'm02',20 union all select 'm03',33

exec up_test @define_table

在SQLSERVER2008下提示:操作數類型衝突:table 與 UserDefineTable不兼容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章