なお、同じ環境で OSqlEdit 10.0.0.6 (64bit) を
試してみたところ、本現象は発生しませんでした。
> なお、OCI.DLL のバージョンは 10.2.0.1.0 です。
OsqlEdit のバージョンは 10.0.2.3 (64bit)です。
同じ環境で、10.0.2.3 (32 bit) を試した場合も再現しました。
32bit 版の方では
OCI.DLL (Version 11.2.0.1.0 Production)
と表示されています。
問題があった行は、ID = '09921827600' でした。
なお、OCI.DLL のバージョンは 10.2.0.1.0 です。
【警告なし】(1603行)
SELECT MEISHO FROM TBL WHERE ID <> '09921827600'
【ORA-24345】(1603行)…警告される
SELECT MEISHO FROM TBL WHERE ID = '09921827600'
UNION ALL
SELECT MEISHO FROM TBL WHERE ID <> '09921827600'
該当行を単独で拾った場合、警告はされませんでしたが、内容は欠損していました。
【警告なし】(1行)
SELECT MEISHO FROM TBL WHERE ID = '09921827600'
SQL*PLUS で出力した場合、上記の内容は
XXxxxxxxxxxxxxxxWWWWWxxxxxxWWWW
という、40 バイト相当の 31 文字が出力されます。
しかし OSqlEdit で表示させた場合、この行の内容は、
XXxxxxxxxxxxxxxxWWWWWxxxxxxW
となっており、34 バイト相当の 28 文字になってしまいます。
また、MEISHO フィールドを右クリックした場合には、
「データ参照(56バイト)」
と表示されました。(UTF-16 換算のバイト数になっている?)
このデータに対して
LENGTH(MEISHO)
を実行すると「31」が返され、
DUMP(MEISHO, 1016)
を実行すると、Typ=1 Len=40 CharacterSet=JA16SJISTILDE:〜 となります。
DUMP の結果を見てみると、最後に
,a7,8d,ec,92,53,93,96
とあることから、欠損した最後の 3 文字は '作担当' です。
なおこのデータは、OSqlEdit において、
SUBSTR(SHOZOKU_MEI,1, 31) …これだと 31 文字すべて返された
SUBSTR(SHOZOKU_MEI,1, 28) …先頭 28 文字のみ
SHOZOKU_MEI …先頭 28 文字のみ
という結果となりました。
文字列リテラルの場合も同様でした。
SELECT 'XXxxxxxxxxxxxxxxWWWWWxxxxxx制作担当' FROM DUAL
の結果が「XXxxxxxxxxxxxxxxWWWWWxxxxxx制」になってしまいます。
※上記は実際の文字列とは異なります。
※上記に書いた XXxxxxxxxxxxxxxx… の場合は再現しません。
> Oracle DBの文字コード(NLS_CHARACTERSET)は何でしょうか?
キャラクタセットは下記になっています。
NLS_CHARACTERSET = JA16SJISTILDE
NLS_NCHAR_CHARACTERSET = AL16UTF16
また、『SELECT DUMP(MEISHO, 1016) FROM TBL』を実行した場合は、
「Typ=1 Len=2〜40 CharacterSet=JA16SJISTILDE: ………」
となります。制御コード(0x00〜0x1f,0x7f) は含まれていませんでした。
> では結果が1レコード多いと思いますが、
> このレコードについて文字が欠けていたりするでしょうか?
両者を比較すると、確かに 1 行だけ増えていますが、
文字の欠損は確認できませんでした。
> 文字コードの変換などが発生する場合に、サイズが足りなくなっているかもしれません。
タブ1 : SELECT ID, MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1449 ORDER BY 2;
タブ2 : SELECT ID, MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1450 ORDER BY 2;
上記を実行すると、タブ2 の方だけ [ORA-24345] が警告されます。
ここで、
タブ3 : !grid_diff 1 2
を実行したところ、追加された行は
タブ1 の 398 行目と 399行目の間にありました。
*** OSqlEdit1 *
--- OSqlEdit2 *
*** 396,403
05399921800 XXxxxxxxxxxxxxxxWWW
09921827400 XXxxxxxxxxxxxxxxWWWXXXWWWWWW
09921827500 XXxxxxxxxxxxxxxxWWWXXXWWWW
00992810000 XXxxxxxxxxxxxxxxWWWWWW
- 09921810000 XXxxxxxxxxxxxxxxWWWWWW
09921800100 XXxxxxxxxxxxxxxxWWWWW
00053999213 XXxxxxxxxxW
09921329900 XXxxxxxxxxWXXXWWWW
--- 396,404
05399921800 XXxxxxxxxxxxxxxxWWW
09921827400 XXxxxxxxxxxxxxxxWWWXXXWWWWWW
09921827500 XXxxxxxxxxxxxxxxWWWXXXWWWW
+ 09921827600 XXxxxxxxxxxxxxxxWWWWWxxxxxxW
+ 09921810000 XXxxxxxxxxxxxxxxWWWWWW
00992810000 XXxxxxxxxxxxxxxxWWWWWW
09921800100 XXxxxxxxxxxxxxxxWWWWW
00053999213 XXxxxxxxxxW
09921329900 XXxxxxxxxxWXXXWWWW
実データ故、内容は伏せさせていただきましたが、
X は 半角英大文字
x は 半角カナ
W は 漢字
という構成でした。
該当行付近のみを取り出してもみましたが、
その程度では、ORA-24345 は検出されないようです。
SELECT ID, MEISHO FROM TBL
WHERE ID IN ('09921827500','09921827600','09921810000')
ORDER BY 2
>Orator さん
osqleditではテーブル定義に合わせて内部的にバッファサイズを指定して
データを受信しています。
文字コードの変換などが発生する場合に、サイズが足りなくなっているかもしれません。
Oracle DBの文字コード(NLS_CHARACTERSET)は何でしょうか?
また、
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1599;
と
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1600;
では結果が1レコード多いと思いますが、このレコードについて文字が欠けていたり
するでしょうか?
OSqlEdit で SELECT 文を実行すると、下部のステータスバーに
『〜件選択されました Warning(ORA-24345: 切捨てまたはNULLフェッチ・エラーが発生しました。)(〜 msec)』
と表示されることがあります。
何か、アプリ側でバッファサイズ指定のようなものがあるのでしょうか。
1604件のデータを持つ VARCHAR2(40) 列に対して、
試してみたところ、下記の結果となりました。
-- 下記は 警告 ORA-24345 が発生する
SELECT MEISHO FROM TBL;
SELECT '[' || MEISHO || ']' FROM TBL;
SELECT CONCAT('[', CONCAT(MEISHO, ']')) FROM TBL;
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 2000;
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1600;
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1599 ORDER BY 1;
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1450 ORDER BY 1;
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1450 ORDER BY 1 DESC;
-- 下記は 警告なし
SELECT '1234567890123456789012345678901234567890' FROM TBL;
SELECT LENGTH(MEISHO) FROM TBL;
SELECT SUBSTR(MEISHO, 1, 9999) FROM TBL;
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1599;
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1000;
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1449 ORDER BY 1;
SELECT MEISHO FROM TBL WHERE ROWNUM BETWEEN 1 AND 1449 ORDER BY 1 DESC;
>ワットさん
ご報告いただき、ありがとうございます。
メモリの管理に問題がありました。osqledit 10.0.2.3で修正いたしました。
OSqlEdit Version 10.0.2.2 (64bit)
OSqlEditを使用していると時々以下のようなメッセージが表示されます。
プログラムを起動してから実行した処理はテーブルを作成するなどで、
大量データの検索などはしていません。
DBMS_OUTPUTのバッファサイズは無制限にしています。
コンピューターのメモリが不足しています。ファイルを保存し、これらのプログラムを終了してください:
osqledit
メッセージが表示された時のタスクマネージャーでのメモリ量は2,462.3MBです。
osqledit 10.0.2.2 での対応、ありがとうございました。
無事に osqlgrid を起動できました。
おがわさま
10.0.2.1にて、DBMS_OUTPUTの事象が解消されたことを確認しました。
早々のご対応ありがとうございました。
>Orator さん
osqlgrid起動の問題について、osqledit 10.0.2.2で修正しました。
>点式 さん
ご要望いただき、ありがとうございます。
検討してみます。
>DT34X さん
ご報告ありがとうございます。
osqledit 10.0.2.1で修正しました。
ver.10.0.2.0(32bit)
DBMS_OUTPUTの出力設定を行った場合、強制終了されます。
(ver9では問題無く出力されます)
ご確認願います。
***↓以下例↓***
[DBMS_OUTPUT]
・DBMS_OUTPUTの出力を受信する:on
・バッファイサイズを無制限にする:on
[SQL]
declare
cursor
c_tbl
is
select
*
from
sys.DBA_TABLES t
order by
t.OWNER
, t.TABLE_NAME;
begin
for r_tbl in c_tbl
loop
dbms_output.PUT_LINE(r_tbl.OWNER||'.'||r_tbl.TABLE_NAME);
end loop;
end;
[結果]
osqeditが強制終了
すでにテキストエディタとして完成の域に達しているotbeditですが、
HTMLファイルを200件くらい一度に開いて、その全部のファイルを対象に
検索/置換を実行したいのですが、現状では一画面ずつタブを移動しながら
ファイルの数だけ置換を繰り返さなくてはなりません。
置換ダイアログの対象範囲セレクタの『選択範囲』『全体』に加えて、
『開いている全ファイル』があればいいのになと思うことがあります。
本来置換ツールかマクロで行うべき作業でしょうが、エディタの置換
ならアンドゥが使えるし、置換速度の早いotbeditなら対象が複数の
ファイルが対象でも十分実用になると思うので、ご検討いただけたら
幸いです。
>Orator さん
ご報告ありがとうございます。
調査いたします。
select *
from "Table1" x
where x."CodeType" = 55
order by 1, 2
上記の SQL を OSqlEdit で実行して確認した後、
「OSqlGrid を起動」を呼び出すと、
---------------------------
[row:4,col:7] ORA-00904: "X"."CodeType": 無効な識別子です。
---------------------------
のエラーになってしまいました。
「where x."CodeType" = 55」の部分を
「where "CodeType" = 55」にした場合は問題なく呼び出せます。
# OSqlEdit x64 10.0.2.0
# OSqlGrid x64 6.0.0.9
おがわ さん
教えていただいた内容で解決できました。
ありがとうございました。
>tetsuさん
ご報告ありがとうございます。
調査してみますがoracle clientの問題で、osqledit側では解決できないかもしれません。
osqleditの配置場所のパスに「丸括弧閉じる」の文字が含まれる場合、「TNS: 指定された接続識別子をを解決出来ませんでした」のエラーが出ます。
例:
C:\Users\%username%\workspace\a(b)\osqledit_10_32
>M.Nakayamaさん
ご利用ありがとうございます。
ツール→オプションメニューの設定タブで、OracleとUnicode(UTF8)で通信するの
チェックをつけたり外したりしてみてください。
OSQLEDIT(10.0.1.9)を利用させていただいています。
select 'アイウエオカキクケコ' 半角col1 ← データはすべて半角です
,'アイウエオカキクケコ' 半角col2 ← データはすべて全角です
from dual
これを実行するとCOL1のデータが'アイウエオカキ'までしか戻ってきません。
利用しているパソコンを初期化したあとからこのような現象が発生しています。
(初期化前は大丈夫でした)
解決策がわからず書き込ませていただきました。
よろしくお願いいたします。
>H.take さん
ご報告いただき、ありがとうございます。
psqledit ver.4.0.4.1で修正しました。
psqledit ver.4.0.4.0 を利用させて頂いております。
ログイン情報の設定で、接続先名称を登録出来る様に
なっておりますが、名称をつけた行を、[UP]及び[DOWN]で
移動させると、接続先名称の列のみ移動せず、置いてけぼりと
なってしまいます。
名称も移動させるようお願い出来ませんでしょうか。
ご検討のほど、よろしくお願い致します。
おがわさん
迅速にご対応頂きましてありがとうございます!
これからも活用させて頂きます。
>DLL さん
ご要望いただき、ありがとうございます。
検討させていただきます。
>Teshikaga さん
ご報告ありがとうございます。
osqledit 10.0.2.0で修正しました。
OSqlEdit Ver 10.0.1.9を使用させて頂いております。
ショートカットSQLの設定で、キー割り当てが出来ない様です。
「キー割り当て」のダイアログボックスは表示されるのですが
新しいショートカットキーを入力出来ないのです・・・。
Windows 7 Professional 64bitです。
ご確認頂き、もし対応出来る様であればご対応頂けると
嬉しいのですが・・・。
宜しくお願い致します。
OsqlEditを使用させていただいています。
右クリック+マウスホイールでタブ移動ができる機能があれば便利だと思っています。
ご検討いただければと思います。
よろしくお願いします。
>おがわさん
了解です。ご回答ありがとうございました。
>Direct さん
otbeditのご利用ありがとうございます。
キーボードマクロ機能につきまして、WindowsXPまでのサポートとなっております。
Windows7や10では動作しないようです。
otbedit(6.3.5.0)を使わせてもらっています。
環境はWindows7(64bit)です。
キーボードマクロが機能しないのですが不具合でしょうか?
とても良いエディタですが、キーボードマクロが使えないと不便です。。
>のんぺーた さん
報告いただき、ありがとうございます。
osqledit 10.0.1.9で修正しました。
OSqlEdit Ver 10.0.1.8 (32bit)
select * from TBL t where t.
の「t.」の後ろにカーソルがある状態で
オブジェクトリストの項目名ダブルクリックしてもエディタに展開されません。
対応をお願いします。
>みやびさん
osqleditをご利用いただき、ありがとうございます。
スキーマ入力済みの動作について、改善可能かどうか検討してみます。
お世話になります。みやびと申します。
osqleditがないと仕事にならないくらい利用しています。
hogeスキーマのemployテーブルを参照する場合、
select * from hoge.employ;
と打ちますが、
salaryテーブルに変えようと「employ」をダブルクリックで選択し、salaryをテーブル一覧から選択すると、
select * from hoge.hoge.salary;
と、「hoge」がダブって編集されます。
もし可能であれば、スキーマが入力済みの場合はキャンセルするなど、対応いただけないでしょうか。
もしくは、すでにある設定項目で対応可能であれば教えてください。
よろしくお願いします。
>snowman さん
osqleditをご利用いただき、ありがとうございます。
ORAエラーについては、OracleクライアントのAPIを実行した結果、
エラーを検出していますので、クライアントとサーバのバージョンの
問題と思います。
OSqlEdit Ver.10.0.0.6
を利用しているのですが、Login時
「ORA-03134: このバージョンのサーバへの接続は、サポートされていません。」
が表示されるのですが、これはあくまでも
OSqlEditが利用している、Oracleクライアントと接続先サーバの
バージョンの問題と認識して間違いないでしょうか?
以上、お手数ですが、ご確認下さい。
Pleas舒ミ 舒ミxョツ let m舒ミ 舒ミxョツ know 舒ミ据ョツ§ッツxツ丐ツ吐 th舒ミ据ョツ§ッツxツ丐ツ都 ok ?ith 舒ミ据ョツ§ョミ遭ツ登u.
It is really a nice and helpful piece of info. Ia舒ミ据ョツ著ッツxツ丐ツ囗ョミxョツ堅ョミ据ョツ著ッツxツ丐ツ椈ョミ遭ツ枸 glad that you shared this useful information with us. Please keep us informed like this. Thanks for sharing.
>Orator さん
ご要望いただき、ありがとうございます。
検討させていただきます。
OSqlEdit 10.0.1.0 にて、たらさん提案の
「ログイン先ごとに背景色を変更」する機能を追加していただきました。
これにもう一つ手を加えて、接続先一覧画面に
実際のエディタ背景色/グリッド背景色が分かるような列を
設けられないでしょうか。
よろしくご検討ください。
OSqlEdit 10.0.1.1 (x64) + OSqlGrid 6.0.0.4 (x64) を利用しています。
/** 1 **/ SELECT * FROM "TABLE_NAME";
/** 2 **/ SELECT * FROM "TABLE_NAME"X;
/** 3 **/ SELECT * FROM "TABLE_NAME" X;
/** 4 **/ SELECT * FROM OWNER_NAME."TABLE_NAME";
/** 5 **/ SELECT * FROM OWNER_NAME."TABLE_NAME"X;
/** 6 **/ SELECT * FROM OWNER_NAME."TABLE_NAME" X;
/** 7 **/ SELECT * FROM "OWNER_NAME"."TABLE_NAME";
/** 8 **/ SELECT * FROM "OWNER_NAME"."TABLE_NAME"X;
/** 9 **/ SELECT * FROM "OWNER_NAME"."TABLE_NAME" X;
OSqlEdit 上で [SQL 実行] ボタンを押した場合は、
上記 9 パターンいずれの SQL も、正常に実行されます。
※行末セミコロンの有無は影響しない様子
しかし、[OSqlGridを起動] ボタンを押した場合は、
(5)(7)(8)(9) のパターンで、下記のエラーになってしまいました。
---------------------------
このSQLでは,OSqlGridを利用できません
テーブル定義の取得に失敗しました
---------------------------
別ユーザーのテーブルを「Select 文作成」した場合、
『オブジェクト名を常にダブルクオートで囲んでコピー』オプションが On だと
(7) または (9) の SQL が生成されますので、改善いただけると嬉しいです。
>Orator さん、のんぺーた さん
ご要望いただき、ありがとうございます。
検討させていただきます。
「オブジェクトのソースを取得」にて、
DEFAULT句の箇所を
Oracle12cからの機能"DEFAULT ON NULL"句に対応したソース出力を実装していただきたいです。
OSqlEdit/OSqlGrid のオプション「改行を表示」において
Cr / Lf / Cr+Lf を区別して表示する機能を実装できないでしょうか。
たとえば秀丸エディタの『改行コードを区別して表示』オプションでは
CR … ←
LF … ↓
CR+LF … <┘
のように表示されるのですが、それと同種の機能があると助かります。