2

タイトルに記載されているエラーが発生しています。

36 文字の ID を使用しています。このエラーは、asp.net Web フォームの sqldatasource でのみスローされます。で更新を行う場合は問題ありませんOracle sql developer

どうすればこれを修正できますか?

4

4 に答える 4

3

Oracle は最大 30 文字の識別子をサポートしていますが、識別子の長さ36はそれよりも長いため、長さを 30 文字にしてください。

このリンクを参照してください

于 2010-05-07T11:13:45.257 に答える
2

SQL Developerなどの別の環境からDML(UPDATE tableName SET ...)を正常に実行している場合、asp.netコードは、テーブルの名前またはテーブルの列名を誤って指定または構築している必要があります。Oracleは、他のチェックの前にこれらのいずれかを30文字以上として解析する場合、この例外をスローします。

Srinivasが指摘したように、最大​​長は30であるため、36文字の識別子はSQLDeveloperでは機能しません。SQLDeveloperで「機能している」ステートメントを投稿できますか。

于 2010-05-07T11:38:42.137 に答える
1

ああ、なるほど。36文字の列名ではなく、実際のデータです。それを片付けてよかった。

「なぜこれがASP.NETSqlDataSourceから発生するのか」については、ASCIIとUnicodeの間の変換に問題があるのではないかと思います。NVARCHAR2はUnicodeですが、Unicodeの世界では何かがうまく機能していないのではないかと思います。Webサーバー、クライアント、データベース、考えられるすべてのものをチェックしてください-どこかに、Unicodeを適切に話さないASCIIクライアントがあり、混乱していることに気付くと思います。 Unicode文字列の長さについて(32のUnicode文字は64バイトを使用します(UTF-16を想定))。

幸運を。

于 2010-05-07T17:47:22.513 に答える
1

SERVICE_ID NVARCHAR2(36) NOT NULL

マルチバイト・キャラクタ・セットを使用するようにSQL Developerが構成されていますか? ORA-12899: value too large for column特に、ORA-00972 ではなくスローされると予想されるので、大げさな推測です。

于 2010-05-07T14:28:52.363 に答える