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不兼容。