![](/img/trans.png)
[英]String or binary data would be truncated. The statement has been terminated. System.Data.SqlClient.SqlException (0x80131904)
[英]System.Data.SqlClient.SqlException: String or binary data would be truncated
我正在創建一個Web應用程序,在其中對存儲過程執行select命令,但是我想將相同的提取數據插入到另一個表中。
所以我嘗試做類似下面的事情
CREATE PROCEDURE profinalinstexpensesonid
(@from varchar(5000),
@to varchar(5000),
@trainer varchar(5000),
@sonvinid varchar(5000)
)
AS
BEGIN
INSERT INTO invoice(sonvinid, tid, date, brandname, zone, location, area, venuename, venue, instructore, amount)
SELECT
instructoreexpense.sonvinid,
sonvininsert.trainer,
CONVERT(VARCHAR, sonvininsert.date, 105) AS date,
sonvininsert.brandname,
SUBSTRING(sonvininsert.zone, 1, 1) AS zone,
sonvininsert.location,
sonvininsert.area,
companysonvinunitvenue.venuename,
sonvininsert.venue,
sonvininsert.instructore,
instructoreexpense.amount
FROM
instructoreexpense
LEFT OUTER JOIN
sonvininsert ON sonvininsert.sonvinid = instructoreexpense.sonvinid
AND sonvininsert.status = '0'
LEFT OUTER JOIN
finalinstructoreexpense ON finalinstructoreexpense.sonvinid = instructoreexpense.sonvinid
LEFT OUTER JOIN
companysonvinunitvenue ON companysonvinunitvenue.id = sonvininsert.comsonvinid
WHERE
sonvininsert.date BETWEEN CONVERT(DATETIME, @from, 105)
AND CONVERT(DATETIME, @to, 105)
AND sonvininsert.trainer = (SELECT empname
FROM trainerdetails
WHERE trid = @trainer)
AND instructoreexpense.sonvinid NOT IN (SELECT CAST(Item AS INTEGER)
FROM SplitString(@sonvinid, ','))
ORDER BY
instructoreexpense.sonvinid
END
當我執行存儲過程時
exec profinalinstexpensesonid '01-01-2013','01-01-2017','andrews'
我收到以下錯誤
Msg 8152,第16級,狀態13,第10行,程序profinalinstexpensesonid
字符串或二進制數據將被截斷。
在我的第10行中,我有以下代碼
insert into invoice(sonvinid, tid, date, brandname, zone, location, area, venuename, venue, instructore, amount)
我不知道這是怎么回事?
該錯誤消息指出, invoice
表中的列的大小小於要插入其中的數據的大小。
例如,如果列brandname
數據類型為varchar(50)
而您嘗試插入的字符超過50
,則將導致錯誤。
要解決此問題,請將invoice
中的列大小與要插入的列大小進行比較。
您需要檢查發票表的列大小以及要從中填充數據的選擇列表中的列。
假設您要從表2中將數據類型為varchar(70)
列“ B”插入表1中的數據類型為varchar(50)
列“ A”中; 當您嘗試在50個varchar
大小的列中插入70個字符時,此操作將無效。
檢查源列和目標列的數據類型及其長度; 並更改它,然后重試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.