■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。

よくある質問(FAQ)

検索オプション 矢印

~
リセット
新規投稿
最近PL/SQLを始めた初心者です。
今トリガーを勉強しているのですが、
WHENの指定で分からない部分がありお知恵を貸してください。

Aという表のhogehogeという列以外になにかしらのSQL文が
発行されたときにhogehogeにSYSDATEを入れたいのですが、

この「hogehoge列以外」というWHEN句はどう書けばいいのでしょうか?

いろいろネットを検索してみたのですがキーワードが悪いのかひっかかりません。
またこのような条件などの一覧表をおいてらっしゃるサイトさん等
ご存知でしたら教えていただけないでしょうか?

よろしくお願いします。
こんにちは
後迫@SIです。

お問い合わせいただきました件についてですが、
挿入(更新)されるレコードの、
対象列がNULLの場合はSYSDATEを代入するような処理で
可能と思います。

簡単なものとなりますが、サンプルコードを以下に記述いたしますので、
参考にしていただけますでしょうか。

CREATE OR REPLACE TRIGGER トリガー名
BEFORE INSERT OR UPDATE ON テーブル名
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
BEGIN
IF :NEW.日付型の列名 IS NULL THEN
:NEW.日付型の列名 := SYSDATE;
END IF;
END;
/

何卒よろしくお願いいたします。
ありがとうございます。
そういう方で記述する方法もあるんですね。
活用させていただきます。
初めまして。

Object Browser ver9.1.0.0にて、ストアドプログラムの実行時に、
タイプがTABLEとなっている項目をどのように設定すればいいのかわからなくて困っています。

どなたか教えていただければ幸いです。
宜しく御願い致します。

TEST_TABLEの構成
項目名       型      長さ
-----------------------------------------
TEST_ID      NUMBER 10,0
TEST_NAME   VARCHAR2 20

TABLE型の宣言
TYPE SF_TEST_ID IS TABLE OF TEST_TABLE.TEST_ID%TYPE;

ストアドプログラムの実行画面
名前       タイプ      引数
--------------------------------------------
SF_TEST_ID    TABLE
           NUMBER

となっており、TABLEとNUMBERの2箇所に引数を設定するようなのですが、
どのように設定すればいいのかわかりません。

宜しく御願い致します。
こんにちは
後迫@SIです。

お問い合わせいただきました件についてですが、
現状ではTABLE型の引数には対応していないため、
デバッグ時に引数として入力することはできません。
(VARRAY型などの配列型についても対応しておりません。
RECORD型は可能です。)

このたびはご希望に沿うことができず
誠に申し訳ございません。

TABLE型引数の対応につきましては、
今後のバージョンアップで対応を検討させていただきますので、
何卒よろしくお願いいたします。
Oracle超初心者です。
30日間試用版を試しているのですが、
テーブルのデータはSQL文でInsertとかUpdateとかしなくても、
表のデータを直接編集してもOKなのですよね?
Accessのように・・・。
SQL実行の説明が多いのですが、直接編集したほうが
簡単ではやいですよね?
SQL文で編集しなくては
何か都合の悪いことでもあるのでしょうか?
こんにちは
後迫@SIです。

ご指摘いただいたとおり、
テーブル画面の「データ」タブにて
GUI上でのINSERT/UPDATE/DELETEの操作は可能ですが、
1レコードだけでなく、全てのレコードなどを一括で変更したい場合や、
複数テーブルの結合文の表示をしたい場合、
他のアプリケーションより抽出したSQLを実行したい場合などのために、
任意のSQLを実行する機能も用意しております。

SQL実行画面のメリットとしまして、
・実行したSQLは自動で履歴保存されるため再実行が可能
・実行するだけでなく、実行計画の参照も可能
などがありますので、必要に応じてテーブル画面の「データ」タブと
使い分けていただければと思います。

何卒よろしくお願いいたします。

返信遅くなりましたが、ご回答ありがとうございました。
さまざまな機能があり、Oracle初心者には助かるソフトですね。
さらに、このようなサポートの掲示板まであるなんて
心強いです。
SIObjectBrowserの購入を提案してみたいと思います。
データを表示して明細のコピーをしました。

改行付きの項目だけを選択してコピーするとCRLF CHR(13)+CHR(10)が
正しくコピーされていますが、その明細行を全て選択して
コピーをすると、その改行付きの項目が勝手にCRをはずして
LFだけに変換されてしまいました。
OB9,OB10でも同じ現象です。

これはなんぞ?
こんにちは
後迫@SIです。

お問い合わせいただきました件についてですが、
レコード単位でコピーした場合は、
その後、EXCELに貼り付けることを想定しているため、
改行コードをLFとして出力しております。
(EXCELに貼り付けた場合は改行を含むデータも1セル内に納めたいため)

現状では上記のような動作となっておりますが、
ご指摘いただいたとおり、
列データをコピーした場合と動作が異なるのはわかりにくいと思いますので、
改行コードを統一するなどの修正を検討したいと思います。

何卒よろしくお願いいたします。
select * from XXXX で検索し、そのレコードを修正しようとしたところ、
「対象レコードが他のユーザにより削除されています。」がでます。
また、セクセルデータをコピペしたところ、データはあっている(csvデータでcseにてインポートできる)にもかかわらず、インサートエラーになる。

推測するに、項目数が多い場合(100項目以上)または1項目が長い(2000バイトくらい)の場合は発生しているもよう。

SIオブジェクトブラウザーのバージョンはver 10.1.0.0
ORACLE ver 9.2.0.1.0(unixのeucでsolaris版)
こんにちは
後迫@SIです。

お問い合わせいただきました件ですが、
弊社で現象が再現することができず、原因の特定が困難な状態です。
大変申し訳ございません。

つきましてはお手数ですが、
以下の追加情報をいただいてもよろしいでしょうか。

①該当テーブルのエクスポートデータを
 サポート宛にいただきたいのですがよろしいでしょうか。

 エクスポートデータにつきましては、以下の手順にて作成していただけます。
 1.ObjectBrowserにてログイン後、
 オブジェクト一覧(テーブルの一覧が表示されている画面)より、
  該当のテーブルを右クリックし、
  ポップアップメニューより「エクスポート」を選択します。
 2.エクスポート画面が表示されます。
  「オプション」タブをクリックし、
  「権限・インデックス・データ行・制約」すべてにチェックを入れます。
  また、一番下にあります、「使用ツール」に、エクスポートツールのある
  パス(「Oracleホーム\bin\EXP.EXE」を指定します。)
  ※その他はデフォルトの設定でかまいません。
 3.実行ボタンを押し、エクスポートを実行します。
  正常終了した場合、「選択」タブの「ファイル名」で指定した場所に
  エクスポートしたファイルが作成されていますので、
  そのファイルをいただけますでしょうか。

  ※もし、エクスポートにてエラーが発生した場合は、
  お手数ですが、ご連絡をいただいてもよろしいでしょうか。
   (その際は、「選択」タブ「オプション」タブ、「結果ログ」タブを
   それぞれ選択した状態での3枚のスクリーンショット画像を
   いただいてもよろしいでしょうか。)

②また、データベースのキャラクタセットはSJISになっておりますでしょうか?

お手数をおかけしてしまい申し訳ございませんが、
何卒よろしくお願いいたします。
INDEXについて 2008/01/20 14:15 OB 1
SI Object Browser9を使用しているのですが、INDEXを新規作成した際に
INDEXを付与したい項目のみを選択し、他になにも設定せず作成した場合
のINDEXの種類は何でしょうか?
B*Treeなのでしょうか?
こんにちは
後迫@SIです。

お問い合わせいただきました件ですが、
ビットマップや逆キーのオプションをつけずに通常のCREATE INDEX文で
作成した場合は、B-Treeインデックスとなります。
(ビットマップや逆キーインデックスにしたい場合は、
インデックス画面にて、明示的にチェックをつける必要があります。)

何卒よろしくお願いいたします。
OBERの移行 2008/01/18 15:38 OBER 5
OBER4を使用していますが、別のPCに環境を移行する際に、レポート定義などの情報を、
簡単に移行する方法はありますでしょうか?

以上、よろしくお願いします。
Re: OBERの移行 2008/01/21 10:02 OBER
こんにちは
山田@SIです。

レポート定義を移行する場合は、以下の手順を行っていただけますでしょうか。

①メニューバー「ツール」→「オプション」の「フォルダ」タブ、
 「レポート定義保存フォルダ」が指しているパスに移動する。

②直下のファイルを全てコピー(*.xlsファイルと*.rpdファイル)

③移行先の、「レポート定義保存フォルダ」
 が指しているパスにファイルをコピーする。

上記手順で、レポート定義の移行が行えます。

お手数をおかけしてしまいますが、
何卒よろしくお願いいたします。
Re: OBERの移行 2008/01/22 17:43 OBER
回答ありがとうございます。
手順通り行いましたが、ファイルを再度開きなおすと、
レポート定義が何もセットされていない状態になります。
また、オプションのフォルダを確認するとレポート定義保存フォルダも
戻ってしまっています。
これは、他に別の手順があるのでしょうか?

尚、レポート定義保存フォルダについては、始め表示しているパスから変更しています。

変更前
C:\Documents and Settings\All Users\Application Data\OBER4\Report
変更後
C:\Program Files\OBER4\Report

これが元に戻ってしまいます。
これは、レポート定義保存フォルダは変更できないということですか?

以上
Re: OBERの移行 2008/01/23 10:00 OBER
こんにちは
山田@SIです。

>レポート定義が何もセットされていない状態になります。

上記現象は「ツール」→「オプション」→「フォルダ」タブの
「レポート定義保存フォルダ」に指定したパスが存在しないか、
指定したパスの先にrpdファイル(インデックス一覧.rpd など)
が存在しない場合に発生します。
お手数をおかけして大変申し訳ございませんが、
指定先のフォルダとファイルが存在するか、ご確認いただけますでしょうか。


>また、オプションのフォルダを確認するとレポート定義保存フォルダも
>戻ってしまっています。
>これは、他に別の手順があるのでしょうか?
>
>尚、レポート定義保存フォルダについては、始め表示しているパスから変更しています。
>
>変更前
>C:\Documents and Settings\All Users\Application Data\OBER4\Report
>変更後
>C:\Program Files\OBER4\Report
>
>これが元に戻ってしまいます。
>これは、レポート定義保存フォルダは変更できないということですか?

レポート定義保存フォルダも変更は可能です。
こちらの件に関しましては、こちらで現象が再現せず、原因の
特定が困難な状況です。つきましては、いくつか追加情報
をいただいてもよろしいでしょうか。

①お使いのOBERのバージョン

②OBERを使用しているクライアントのOS

③変更前のパス(C:\Documents and Settings\All Users\Application Data\OBER4\Report)
 に指定のファイルを置いても、レポート定義画面が
 空になりますでしょうか。
④通常、パスを変更してOKボタンを押下するとパスが更新される
 様になっておりますが、C:\Program Files\OBER4\Report
 以外のパスを指定して(たとえばデスクトップやC:直下など)OKボタンを
 押しても元に戻ってしまいますでしょうか。

以上になります。お手数をおかけしてしまいますが、
何卒よろしくお願いいたします。
Re: OBERの移行 2008/01/23 14:05 OBER
回答ありがとうございます。

少し説明不足がありました。

>お手数をおかけして大変申し訳ございませんが、
>指定先のフォルダとファイルが存在するか、ご確認いただけますでしょうか。

こちらですが、手順通り行い、OBERを終了し、再度起動すると発生します。
オプション画面で、rpdファイルが保存しているフォルダを指定すると、
その時は、正しくレポート定義も表示されるのですが、再度OBER4を起動すると元に戻ってしまいます。
オプション画面を確認すると、変更前のフォルダに戻ってしまっています。

>①お使いのOBERのバージョン

V4.1.0

>②OBERを使用しているクライアントのOS

WindowsXP SP2

>③変更前のパス(C:\Documents and Settings\All Users\Application Data\OBER4\Report)
> に指定のファイルを置いても、レポート定義画面が
> 空になりますでしょうか。

置いた場合は空になりません。

>④通常、パスを変更してOKボタンを押下するとパスが更新される
> 様になっておりますが、C:\Program Files\OBER4\Report
> 以外のパスを指定して(たとえばデスクトップやC:直下など)OKボタンを
> 押しても元に戻ってしまいますでしょうか。

別のフォルダを指定する場合は、元に戻ることはありません。
どうやら、”C:\Program Files\OBER4\Report”に指定すると戻るようです。
デスクトップやC:\直下などに複数を指定してみましたが、問題はありませんでした。

こちらですが、サポート宛へメールを差し上げたほうが宜しいでしょうか?

Re: OBERの移行 2008/01/23 15:19 OBER
こんにちは
山田@SIです。

追加情報ありがとうございました。
現象について再現いたしました。

原因につきましてですが、
Ver.4.1.0.0ではVista対応の関係で
インストール時は、アプリケーション共有フォルダ
(「C:\Documents and Settings\All Users\Application Data\OBER4」)
にレポートフォルダ等のフォルダをコピーするようになっており、

設定が「C:\Program Files\~」になっておりますと正常にレポート設定が読み込みできないため、
「C:\Documents and Settings\~」に上書きするような処理が加えられております。

ただし、Ver.4.1におきましても、
以下の操作により「C:\Program Files\~」を設定するようにすることが可能ですので、
お手数ですが、以下の手順で設定を変更していただけますでしょうか。

①「C:\Documents and Settings\All Users\Application Data\OBER4」直下の
 フォルダ(report,erdなど)を「C:\Program Files\OBER4」直下に
 移動します。(すでにreportフォルダなどが存在する場合は
 カスタムしたファイルを上書きしないようご注意ください。)

②「C:\Documents and Settings\All Users\Application Data\」の
 「OBER4」フォルダを削除します。

③それぞれのフォルダに対するパスをオプションより設定します。

これでフォルダ指定制限がなくなりますので、
お試しいただけますでしょうか。
何卒、よろしくお願いいたします。
 
大変重宝して使用させていただいております。

メニューバーの「表示」→「スクリプト実行」にて開かれる画面にて、
右側のファイルを参照する部分でリスト表示があると思いますが、
このリストにて、項目をクリックすることができるのですがソートしません。

更新日時でソートとか用途がありますので、
ぜひソート機能の実装をお願いします。

以上、よろしくお願いします。
こんにちは
後迫@SIです。

ご要望いただきありがとうございます。

ご指摘いただきましたとおり、
現状では、スクリプト実行画面にてファイル名のソートできませんが
こちらの件につきましては、
今後のバージョンにて修正を検討しておりますので、
何卒よろしくお願いいたします。