問題タブ [ora-12899]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
9 に答える
12647 参照

c# - バイト長に基づいて UTF8 文字列を短縮する最良の方法

Oracle データベースにデータをインポートするために呼び出された最近のプロジェクト。これを行うプログラムは C# .Net 3.5 アプリであり、実際の挿入を処理するために Oracle.DataAccess 接続ライブラリを使用しています。

特定のフィールドを挿入すると、次のエラー メッセージが表示されるという問題が発生しました。

ORA-12899 列 X の値が大きすぎます

使用Field.Substring(0, MaxLength);しましたが、まだエラーが発生します(ただし、すべてのレコードではありません)。

最後に、明らかなはずだったことがわかりました。文字列は ANSI で、フィールドは UTF8 でした。その長さは、文字数ではなくバイト数で定義されます。

これで私の質問にたどり着きます。MaxLength を修正するために文字列をトリミングする最良の方法は何ですか?

私の部分文字列コードは、文字の長さで機能します。UT8 文字列をバイト長でインテリジェントにトリミングできる (つまり、文字の半分をハックしない) シンプルな C# 関数はありますか?

0 投票する
3 に答える
3734 参照

oracle - ORACLE キャプチャ例外オブジェクト

こんにちは、ORACLE で例外がスローされたオブジェクト (テーブルや列など) をキャプチャする方法はありますか?

例外が発生したテーブルとフィールドの名前をユーザーに示すエラー メッセージをカスタマイズするには、オブジェクト名を決定する必要があります。

変数 SQLCODE と SQLERRM があることは知っていますが、エラー オブジェクトの名前を返す追加の変数または関数があるかどうか疑問に思います。

私はこのようなものが欲しい

アップデート

トニーの例を使用して

実際にこのエラーを発生させます*

こういうの見せたい

前もって感謝します。

0 投票する
2 に答える
2816 参照

c# - CHAR(1) フィールドで ORA-12899 エラーが発生しましたが、'C' のみを送信しています

私の Oracle データベースは次のエラーを返します。

ORA-12899 - 列 TIT.ESTADO_CIVIL の値が大きすぎます (実際: 2、最大: 1)

しかし、送信された値が一意の文字「C」であることは確かです。

なぜこれが起こっているのか誰にも分かりますか?

(私はODP.NETでC#を使用しています)

0 投票する
2 に答える
18688 参照

substring - SQL*Loaderを使用してフィールドに収まるようにデータを切り捨てるにはどうすればよいですか? (ORA-12899)

Oracle SQL*Loader を使用して、別のデータベースの可変長文字列 (lob) であった列を Oracle の varchar2(4000) 列にロードしようとしています。4000 文字をはるかに超える文字列がありますが、移行時にこれらの文字列を切り詰めることができ、切り捨てられるべきであることに全員が同意しました (4000 文字を超えるデータを調べましたが、意味がありません)。そのために、制御ファイルで次のように列を指定しました。

ただし、SQL*Loader は、データ ファイル内でこのレコードが 4000 文字を超える行を引き続き拒否します。

レコード 6484: 拒否 - 表 LOG_COMMENT、列 COMMENTS のエラー。ORA-12899: 列COMMENTSの値が大きすぎます(実際: 11477、最大: 4000)

レコード 31994: 拒否 - 表 LOG_COMMENT、列 COMMENTS のエラー。ORA-12899: 列COMMENTSの値が大きすぎます(実際: 16212、最大: 4000)

レコード 44063: 拒否 - 表 LOG_COMMENT、列 COMMENTS でエラー。ORA-12899: 列COMMENTSの値が大きすぎます(実際: 62433、最大: 4000)

はるかに小さい部分文字列を取得しようとしましたが、それでも同じエラーが発生しました。制御ファイルを変更して、4000 文字を超える文字列データを切り捨てて varchar2(4000) 列にする方法を教えてください。

0 投票する
1 に答える
673 参照

nhibernate - 流暢なNHibernateリスト長さ

DBに入ろうとしているリストがあり、次のアサーションを考え出します。

私は次のように自動マッピングをオーバーライドしています:

単純なものが欠けていることは確かですが、たとえば、列の.Lengthを指定する方法はありますmapping.Map(x => x.StateLog).Length(2000);か?

前もって感謝します

編集

次の規則を使用して、すべての文字列を変更して.Lengthを大きくすることができますが、これは.のタイプには影響しないようですIList<string>

コンベンションルートに行くのに役立つかもしれない例を知っている人はいますか?

0 投票する
6 に答える
138085 参照

sql - SQL エラー: ORA-12899: 列の値が大きすぎます

次のテーブルを作成しました

現在、INSERT VALUES ステートメントを使用しようとしています。私は次の声明を書いた

ステートメントを実行しようとすると、次のエラー メッセージが表示されます。

コマンドの 4 行目から始まるエラー: INSERT INTO Customers VALUES(501623129, 'David Patterson', '30 Singleton Close London', 'SW17 9JY', 02082860642) エラー レポート: SQL エラー: ORA-12899: 列の値が大きすぎます" DJ"."CUSTOMERS"."ADDRESS" (実際: 25、最大: 20) 12899.00000 - "列 %s の値が大きすぎます (実際: %s、最大: %s)"

0 投票する
5 に答える
2166 参照

sql - 日時列ORA 12899に関するOracle SYSDATEの質問

私は行があるトリガーを書きました:

何らかの理由でこれは機能しません (EVENTDATE 列にはタイムスタンプ (0) 型があります)。

何かを挿入しようとすると、その列には値が長すぎるというエラー メッセージが表示されます。私は SYSDATE と timestamp(0) が合体してお互いを理解するだろうと思っていました。

なに?

0 投票する
1 に答える
3536 参照

unit-testing - Spring 3 @Transactional アノテーションを使用するとトランザクションがロールバックされない

Spring (バージョン 3.0) の「@Transactional」アノテーションを使用して、Spring でのトランザクション サポートを示していますが、これを機能させることはできません (このフォーラムや他のテクニカル フォーラムで人々が遭遇した同様の問題を見たにもかかわらず)。

ここに私のSpring構成エントリがありspring-application-context.xmlます:

テストクラスのトランザクションメソッドは次のとおりです。

次の SQL 例外がスローされます (予想どおり)。

ただし、例外がスローされた後、トランザクションはロールバックされず、例外がスローされる前の以前のデータベースの挿入と更新がFORMATテーブルにコミットされていることがわかります。

この例外に続いて、データベースに何もコミットされないことを期待していました。

誰かが私が間違っている場所を知っていますか?ここでいくつかの重要な概念が欠けていますか?

どんな助けでも大歓迎です!

0 投票する
1 に答える
911 参照

oracle - Delphi で Oracle エラー ORA-12899 エラー値が列に対して大きすぎます

Oracle にデータベースがあります。クライアント アプリケーションは Delphi で記述されています。データベース内のテーブルに接続されている DBGrid に値を入力すると、「ORA-12899 エラー値が列に対して大きすぎます」というメッセージが表示されます。エラー メッセージで指定された列のデータ型は varchar(6) です。 6 桁を入力してください。エラーは、最大値が 6 で実際は 7 であることも示していますが、これは間違っています。 Delphi と Oracle にバグがありますか? 接続にはADOを使用しています。BeforePostイベントには何もありません。

0 投票する
1 に答える
522 参照

oracle - オブジェクトテーブルの更新後のORA-12899

このテーブルで実行すると、最初の更新クエリは例外ORA-12899を返し、2番目は例外を返しません。

最初の更新クエリは次を返します。

SQLエラー:ORA-12899:列"TA_1"。"V_2"の値が大きすぎます(実際:1、最大:0)

テーブルの制約を無効にすると、両方の更新クエリが機能します。Oracle-XE10g2でテスト済み。それはバグですか、それとも一部のOracleマニュアルには、機能であると書かれていますか?