このサンプルに対してどのように使用しているかを確認してください。
CREATE TYPE dbo.LineItem_TYPE AS TABLE
(
UnitTrade numeric (22,4),
TotalBuy numeric (22,4),
TotalSell numeric (22,4),
GrossProfit numeric (22,4),
QuoteReference varchar (255)
);
GO
CREATE TABLE LineItem
(
UnitTrade numeric (22,4),
TotalBuy numeric (22,4),
TotalSell numeric (22,4),
GrossProfit numeric (22,4),
QuoteReference varchar (255)
);
GO
create proc dbo.uspInsertLineItem
@li dbo.LineItem_TYPE READONLY
AS
set nocount on;
insert LineItem
select *
FROM @li;
GO
declare @li dbo.LineItem_TYPE;
insert @li select
1.23451234,123456789.1111,10.50,1,'Quote1' union all select
999999999999999999.9999,1.1,2.2,null,'Quote1';
exec dbo.uspInsertLineItem @li;
GO
select * from LineItem
------- results
UnitTrade TotalBuy TotalSell GrossProfit QuoteReference
------------------------ --------------- ---------- ------------ ---------------
1.2345 **** 123456789.1111 10.5000 1.0000 Quote1
999999999999999999.9999 1.1000 2.2000 NULL Quote1
* *とマークされた単一の数値を除いて、すべての数値が正しい小数点以下の桁数に忠実に格納されていることがわかります。1.23451234
@liに入れましnumeric(22,4)
た。これは、ユーザータイプに入るとすぐに1.2345でした。これを参照してください:
declare @li dbo.LineItem_TYPE;
insert @li (UnitTrade)
select 1.23451234;
select UnitTrade from @li
--------- result
UnitTrade
---------------------------------------
1.2345