私はテーブルがあり、特定のアクションを実行するためにストアドプロシージャの1つの内部にテーブル値paramを渡すことを念頭に置いています。基本的なテーブル構造は以下の通りです。SQL文字列またはバイナリデータが切り捨てられます。テーブルタイプパラメータに挿入中
CREATE TABLE [dbo].[CitytTax] (
[CountryCode] [int] NOT NULL,
[TaxType] [varchar](255) NULL
)
ご覧のとおり、Taxtype列はvarchar型で最大255文字です。しかし、アプリケーションコードの一部に以下のようなテーブル型を作成し、このテーブル型をparamとしてspのいずれかに渡します。
DECLARE @TaxDetails as [CitytTax]
ここでは、いくつかのダミー値を挿入し、このテーブルタイプをSPのいずれかに渡します。
INSERT INTO @TaxDetails ([CountryCode],TaxType)
VALUES (6047,'Codfggtuioanoio charge to fund the liquidation of insurancevalues')
が、以下のようにエラーを取得:
文字列またはバイナリデータは、ここで問題は、テーブルの値のタイプは、実際のデータベースのテーブルに類似しているカラムを有するされ
を切り捨てされます。だから私はスクリプトの上に挿入すると、それは失敗します。しかし、50文字未満の[taxtype]に値を挿入すると、正常に挿入されます。 50文字以上は使用できません。 IMはなぜそれが失敗するのだろうかと不思議に思って、それは最大255文字を取ることになっていますか?
あなたは 'CREATE TYPE [dbo]。[CitytTax] AS TABLE'を持っていますか?それは何ですか? –
あなたはそれが唯一の値であることを確信していますか? –
私はSQL Serverとのリーグ外ですが、これはASCII/Unicodeなどの問題に関連する可能性があります。ユニコードに切り替え( 'nvarchar'を使用)、DBスキーマ/照合をチェックしてください。申し訳ありませんが、参考にしてください。 http://stackoverflow.com/questions/144283/what-is-the-difference-between-varchar-and-nvarchar –