問題タブ [varchar2]

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 投票する
1 に答える
397 参照

oracle - バイトをOracle Varchar2に格納し、ASCIIをテキストとして扱うにはどうすればよいですか

バイトを Varchar2 に格納し、たとえば ASCII の場合にテキストとして「通常どおり」処理するにはどうすればよいですか? (クエリのように)。

不可能な場合、制限はどこにありますか?

列が文字セットで定義されていることは知っているので、たとえば ANSI の場合、そこに入力できない 1 バイトの値は何ですか? 1 バイト文字セットの ANSI よりも「優れた」ソリューションはありますか?

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

sql - CLOBへの挿入が非常に遅い

'TinyString'VARCHAR2と比較して、(単なる例の文字列)の文字列を行に格納されたCLOBに挿入すると、パフォーマンスが大幅に低下します。私の理解では、STORAGE IN ROWが有効になっているCLOBに4000バイト未満のデータを格納する場合、データはVARCHAR2と同じ方法で効果的に格納され(「オーバーフロー」4000バイトでない限り)、パフォーマンスが大幅に低下することはありません。ただし、私のベンチマーク手順*は、同じデータをCLOBに挿入するのがVARCHAR2に挿入するよりも15倍遅いことを示しています。

以下のコードをご覧ください。

いくつかのテーブルがあり、それぞれに以下のようなCOMPOUNDTRIGGERがアタッチされています。

の操作時にtarget_table、上記のトリガーは、coll_events_histタイプで入力されたデータをに格納しますlog_table。これは、次のように定義されます。

私のセットアップは次のとおりです。Windows7SP1、Oracle 11g

*私のbenchamrkingプロシージャは、各反復でtarget_tableの21k行を更新することを10回繰り返します。

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

oracle - 句読点を削除する

varchar2 の句読点を削除する方法を探しています。つまり、"Marian" から "Marian" を取得し、"Cernický" から "Cernicky" を取得したいということです。

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

sql - 文字列で単語を返す

varchar2データ型の2番目の単語を返し、何もない場合は空白にするにはどうすればよいですか?アイデアは、関数内で関数を使用することです。

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

oracle - タイムゾーン付きのタイムスタンプへのOracle varchar2

タイムゾーン付きのタイムスタンプを含む VARCHAR2 変数を DATE 変数に変換しようとしています。タイムゾーンなしでタイムスタンプを変換できますが、タイムゾーンのロジックを追加すると、「ORA-01821: 日付形式が認識されません」というメッセージが表示されます。以下のコードを参照してください。

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

sql - varchar2フィールドでlead()とlag()を使用するにはどうすればよいですか?

Oracle11g これまでのSQLFiddleでの作業

varchar2列でlead( )関数とlag()関数を使用しています。次のルールを使用して、目的の結果を生成したいと思います。

  1. lag_valがnullの場合、'('
  2. lag_valがset_aと同じ場合、'および'
  3. lag_val!= set_aの場合、'または'
  4. Lead_valがnullの場合、')'

nvl()を使用してnull値を変換すると、「無効な数値」が発生するため、比較できます。

必要な出力

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

string - Entity Framework & Oracle: VARCHAR2 > 1,999 文字を挿入できない

Oracle テーブルに 4,000 文字の VARCHAR2 フィールドを作成しました。Visual Studio 2010、.NET Framework 4、 ODAC 11.2 Release 4、および Oracle Developer Tools for Visual Studio (11.2.0.3.0)で LINQ to Entities を使用してフィールドに文字列値を挿入しています。1,999 文字を超える文字列値を挿入しようとすると、次の内部例外が発生します。

Oracle.DataAccess.Client.OracleException

ORA-00932: 一貫性のないデータ型: 予期される - NCLOB を取得しました

ただし、SQL Developerを使用すると、問題なく4,000文字の文字列値をフィールドに挿入できます。

XMLTYPE フィールドに保存するときに 2,000 文字の制限がある既知の ODAC バグ(ソース #2 ) がありますが、私は XMLTYPE フィールドに保存していません。GAC に Oracle.DataAccess 2.112.3.0 があり、前述の Oracle ソフトウェアのリリース 5 (11.2.0.3.20) に更新することを検討しましたが、「Oracle Developer Tools for Visual Studio」だけが更新されたように見えるコンポーネントです。はリリース 4 から更新されており、「Oracle Data Provider for .NET 4」が更新が必要なコンポーネントであると考えています。私の .NET プロジェクトでは、System.Data.Entity と System.Data.OracleClient はどちらもランタイム バージョン 4.0.30319 です。

とにかく、他の誰かがこのエラーに遭遇したかどうか、そしてもしそうなら、解決策が見つかったかどうか疑問に思っています. Google によると、XMLTYPE フィールドを操作しているときにのみこのエラーが発生しているとのことですが、VARCHAR2 フィールドを操作しているときにこのエラーが発生するのは私だけではないでしょうか?

(FWIW、上記のリンクにある Oracle フォーラム スレッドのユーザー「997340」としての私の投稿への応答を受け取ることも望んでいます。有用な応答を受け取った場合は、この点に関する知識を必ず共有します。)

編集:それが役立つ場合、以下は私のコードで失敗している2つのブロックです。違いがあるかどうかを確認するために、最初のブロックをトラブルシューティングするときに 2 番目のブロックを作成しました。文字列値が既に挿入されているかどうかを確認するとき (「if」ステートメント)、および実際に文字列値を挿入するとき (「AddObject」ステートメント) に例外が発生します。

1:

2:

4 月 3 日の更新:

上記の最初のコード ブロックの「if」ステートメントから、Oracle に送信されている SQL をトレースすることができました。ここにあります:

残念ながら、私が協力した DBA は「p_linq_0」パラメーターの値を提供してくれませんでしたが、前述のように、1,999 文字を超えると例外が発生します。(この SQL をトレースしたとき、4,000 文字の文字列をパラメーターとして渡しましたが、もちろん例外が発生しました。) DBA は、SQL Plus などの特定の SQL クライアントについて、2,000 文字を超える VARCHAR2 を処理できないことについても言及しました。 . 完全には従いませんでした。SQLを使用するかどうかさらに、SQL Developer、またはその他のツールを使用して、Oracle は引き続き 4,000 文字の VARCHAR2 フィールドを照会します。さらに、私のマジック ナンバーは 1,999 文字です。2,000文字ではありません。DBA は、パラメーターに使用できる文字数に制限があることを意味したのでしょうか? さらに重要なことは、SQL Developer でこの SQL を実行し、パラメーターに 4,000 文字の文字列を入力すると、完全に機能することです。そのため、LINQ to Entities を介して機能しない理由について、私はまだ完全に混乱しています。また、プログラムで次のコードを試して、「msg」変数に 4,000 文字の文字列を指定して同様のクエリを実行しましたが、これも完全に機能しました。

今のところ、LINQ to Entities に関連するため、ODAC がバグであることにまだ指を向けています...

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

oracle - Oracle PL/SQL でサイズが 4 mb のファイル全体を 1 つのメールで取得するのに助けが必要です

以下の PL/SQL プロシージャのコードはバイト サイズをチェックし、30000 バイトを超える場合はデータを繰り返し、 30000 バイト (30 kb) ごとにメールの添付ファイル (複数のメールで txt ファイル) を送信します。Oracle PL/SQL で 4 MB のサイズのファイル全体を 1 つのメールで取得する
必要があります。

lv_message_tab のデータ型は varchar2(32767) です。* Varchar2(32767)の代わりにCLOBデータ型を使用できますか? * はいの場合、方法を提案してください。

何百万も前もって感謝します!!!


コレクションテーブルとして入力を与えることでプロシージャを呼び出しています

手順

変数のデータをclob データ型pv_messageの変数に格納したいだけです。lv_message

lv_message := pv_message (つまり、コレクション データ型から CLOB 型へ) の格納方法。「to_clob()」関数を使用して型キャストしようとしましlv_message = to_clob(pv_message)たが、うまくいきませんでした。

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

oracle - VarChar2 と Char の比較: Oracle の設定でこれを許可できますか?

同じことに対して2つの異なる結果が得られる理由を確認するための簡単な質問です。構造的にまったく同じように構築された 2 つのデータベースがあります。どちらにも、varchar2(10) と char(10) の間の比較を行うビューがあり、フィールドの長さは 7 (コース外の char の場合は +3 スペース) だけです。

もちろん、これは私たちの構造に何か問題がありますが、それは私の質問とは別のものです.

1 つのデータベースが比較 (varchar2=char) を実行でき、もう 1 つのデータベースが実行できない可能性があるのはなぜですか? これを許可できるOracle設定はありますか。

助けてくれてありがとう、Grts、Maarten