我有一個場景,有一個表,我想傳遞表中的值參數存儲過程之一,以形成某些行動。基本的表結構如下。SQL字符串或二進制數據將被截斷。同時插入到表類型參數
CREATE TABLE [dbo].[CitytTax] (
[CountryCode] [int] NOT NULL,
[TaxType] [varchar](255) NULL
)
正如您所見,Taxtype列是varchar類型,最多需要255個字符。不過,我將在應用程序代碼的一部分中創建如下的表類型,並將此表類型作爲參數傳遞給sp之一。
DECLARE @TaxDetails as [CitytTax]
現在我將插入一些虛擬值並將此表類型傳遞給其中一個SP。
INSERT INTO @TaxDetails ([CountryCode],TaxType)
VALUES (6047,'Codfggtuioanoio charge to fund the liquidation of insurancevalues')
但得到誤差如下:
字符串或二進制數據將被截斷
這裏的問題是表值類型是一個具有塔,它類似於實際的數據庫表。所以當我插入上面的腳本時,它失敗了。但是,如果我插入任何值[taxtype]少於50個字符,它會插入成功。但超過50個字符失敗。 IM疑惑爲什麼它失敗了,它應該佔用255個字符?
你有CREATE TYPE [dbo]。[CitytTax] AS TABLE嗎?它是什麼? –
你確定這些是唯一被插入的值嗎? –
我已經離開了我的聯盟,但是這可能與ASCII/Unicode等問題有關。切換到unicode(使用'nvarchar')並檢查你的數據庫模式/排序規則。對不起,如果沒有幫助,但另請參閱http://stackoverflow.com/questions/144283/what-is-the-difference-between-varchar-and-nvarchar –