ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

クライアントOS:WIN2000
Oracle:9i(サーバ(UNIX)上にあります)

現在、クライアントからbatを起動し、SQL文を投げ、結果を取得したいと思っております。
(SQL文は単純にTBLをカウントしているだけです)

・batの中身
sqlplus %UID%/%PASS%@%SID% @test.sql > output

結果は取得出来るのですが、余分な情報も結果に出力されてしまいます。結果のみを出力させるにはどうすればよろしいでしょうか?

・余分な情報
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
に接続されました。

このQ&Aに関連する最新のQ&A

アンサープラス

近年出たOracle12cでは、マルチテナント・アーキテクチャの導入やオンラインのままでのデータファイル移動なども可能になったようです。



Oracle Database 12c | ORACLE
http://www.oracle.com/technetwork/jp/database/en …

A 回答 (2件)

sqlplus に -S オプションを追加してみればどうでしょうか。



参考URL:http://biz.rivus.jp/sqlplus_overview.html
    • good
    • 4
この回答へのお礼

問題解決しました。ありがとうございました。

お礼日時:2006/04/26 17:20

オラクルのspool機能を使用してみてはいかがでしょうか?



batの中身は
sqlplus %UID%/%PASS%@%SID% @test.sql
で結果をリダイレクトせず。

SQL文の中で
--test.sqlの中身
spool output
select * from cat;
spool off
quit

です。spool 出力先ファイル です。
spool off するまでの出力をファイル出力します。

以上、参考になればと思います。
    • good
    • 2
この回答へのお礼

こういう代替案もあるのですね。
勉強になりました。ありがとうございます。

お礼日時:2006/04/26 17:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qバッチファイルを使用したsql@plusの実行及びログ出力について

バッチファイルを使用したsql@plusの実行及びログ出力について

Windows Server 2003上で動作しているOracle10gのDBに対して
Windows XP上に配置したバッチファイルをタスクで起動させ、
sql@plusを使用してデータを削除する処理を行いたいと考えています。

---data_delete.bat---
@echo %date% %time% データ削除開始 >> log.txt
sqlplus -S USER/PASS@TNSNAME @data_delete.sql >> log.txt
@echo %date% %time% データ削除終了 >> log.txt

---data_delete.sql---
DELETE FROM TABLE WHERE FLG = 1;
EXIT;

data_delete.batを実行するとlog.txtが出力されます。
---log.txt---
yyyy/mm/dd hh:nn:ss.xx データ削除開始

XXX行が削除されました。

yyyy/mm/dd hh:nn:ss.xx データ削除終了

この時、log.txtの内容を下記のように変更したいのですが、
その方法が分りません。

---log.txt---
yyyy/mm/dd hh:nn:ss.xx データ削除開始
yyyy/mm/dd hh:nn:ss.xx データ削除終了 XXX行が削除されました。

できれば[削除件数 XXX 件]と表示させたかったのですが、
自分の調べた限りではできそうにないので、
フィードバックされる文字列をそのまま使う方向で進めています。

上記ログの出力方法ができるようでしたら、
その方法を教えて頂けると嬉しいです。

宜しくお願いします。

バッチファイルを使用したsql@plusの実行及びログ出力について

Windows Server 2003上で動作しているOracle10gのDBに対して
Windows XP上に配置したバッチファイルをタスクで起動させ、
sql@plusを使用してデータを削除する処理を行いたいと考えています。

---data_delete.bat---
@echo %date% %time% データ削除開始 >> log.txt
sqlplus -S USER/PASS@TNSNAME @data_delete.sql >> log.txt
@echo %date% %time% データ削除終了 >> log.txt

---data_delete.sql---
DELETE FROM TABLE WHERE FLG = 1;
EXIT;

dat...続きを読む

Aベストアンサー

batのリダイレクト>>を使わず、SQL*Plus(@ではなく*です)のspoolを使ってはいかがでしょう?

set NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS'
sqlplus -S USER/PASS@TNSNAME @data_delete.sql

data_delete.sqlの中身
--------------------------
whenever sqlerror exit failer
set echo off
spool log.txt
select sysdate||' データ削除開始'
delete from table where flg = 1;
select sysdate||' データ削除終了'
--------------------------

ご希望のように
yyyy/mm/dd hh:nn:ss.xx データ削除開始
yyyy/mm/dd hh:nn:ss.xx データ削除終了 XXX行が削除されました。
とするためにはちょっとSQLだけではできないのでPL/SQLを使う必要があります。

batのリダイレクト>>を使わず、SQL*Plus(@ではなく*です)のspoolを使ってはいかがでしょう?

set NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS'
sqlplus -S USER/PASS@TNSNAME @data_delete.sql

data_delete.sqlの中身
--------------------------
whenever sqlerror exit failer
set echo off
spool log.txt
select sysdate||' データ削除開始'
delete from table where flg = 1;
select sysdate||' データ削除終了'
--------------------------

ご希望のように
yyyy/mm/dd hh:nn:ss.xx データ削除開始
yyyy/mm/...続きを読む

QPL/SQLをWindowsのBATファイルで実行するには

いつも参考にさせていただいております。
表題のとおり、WindowsServer2003上でBATファイルを起動したいのですが、うまくいきません。

BATファイルの中身
sqlplus USER_A/USER_A @DB_A @SQLPAT
sqlplus USER_B/USER_B @DB_B @SQLPAT

SQLPATファイルは、大体以下の感じで、2つのスキーマーで同じPL/SQLを実行します。

Declare

カーソルループ
更新


END;

タスクにBATファイルを登録し実行すると
最初のPL/SQLは実行されますが、次のUSER_Bが実行されません。

どなたか詳しい方ご教授をお願いできませんでしょうか?
オラクルのVerは9iです。よろしくお願い致します。

Aベストアンサー

pl_sqlは予めDBに登録しておく。
CREATE OR REPLACE PROCEDURE pl_hoge()
IS
・・・
BEGIN
・・・
END;
/

■hoge.bat
sqlplus user/pass@dbname @hoge.sql

■hoge.sql
SET serveroutput ON;
BEGIN
pl_hoge();
END;
/
exit;

1さんはhoge.sql最後のexit;を指摘してます。
私もそれと疑いますが。

Qsqlplusで表示が変なので、出力を整形したい。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------

上記のように意味不明な形式で出てきます。

例えばこんな風に

select カラム1,カラム2,カラム3 from hoge;

カラム1 1の値
---------------------------
カラム2 2の値
---------------------------
カラム3 3の値

等のように分かりやすく表示できないでしょうか?

ちなみにOracle9iR2を使用しています。
sqlに関するツールは使用できないルールでして、あくまでsqlplusのコマンド上でみやすくしなければなりません。

分かりづらくですいませんが、皆さま、ご教授お願いします。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
-----------------------...続きを読む

Aベストアンサー

SQLPLUSを起動して、

SQL>set linesize 列数

でどうだ。

SQL>show linesize

で確認ができる。

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

QPL/SQLで@ファイル名が反応しません

はじめまして、PC超初心者なのにOracleを勉強し始めました。
PL/SQLの本を買って見よう見真似でやっているのですが、SQL*PLUSから@<ファイル名>を実行しても何の反応もありません。

SQL>@sample1

としても

SQL>@sample1
SQL>

と何事もなかったようになります。

本によればエディタに保存したSQL内容が実行されるとあるのですが。。。
ちなみにサンプルエディタをダウンロードして、実行しようとしても全くの無反応です。

どこか根本的な設定がおかしいのでしょうか。。。
どなたかご回答いただけると助かります。

Aベストアンサー

sample1というファイルはどこのフォルダにありますか?
ファイル名にフォルダ名をつけたフルパスで実行してみてください。
たとえばc:\hogeというフォルダにsample1.sqlファイルがあるのであれば
SQL>@c:\hoge\sample.sql
で実行されます。

コマンドプロンプト版のsqlplusだとsqlplusを実行したフォルダにファイルがあるとフォルダ名を省略したファイル名で実行できます。
画面のsqlplusは・・・どこだったか忘れた(^^;

#なんか過去にもこんな質問があったような・・・

Qbatファイルの結果をテキストに吐き出すには?

以下のようなWindowsユーザーのパスワード変更batの結果(正常に出来たかどうか?)をCドライブに吐き出したいのですが、どうbatファイルを書き換えればよいでしょうか?
(とりあえず以下の内容でbatをたたいたのですが、うまく結果が出ません。。。)

henkou.bat
--------------------------------------
net user "test user1" ps123456 /domain
net user "test user2" ps456789 /domain
henkou.bat > c:\henkou結果.txt
pause
--------------------------------------

吐き出されたhenkou結果.txt
--------------------------------------
C:\>net user "test user1" ps123456 /domain
--------------------------------------

DOS画面(吐き出したいもの)
--------------------------------------
C:\>net user "test user1" ps123456 /domain
コマンドは正常に終了しました。

C:\>net user "test user2" ps456789 /domain
コマンドは正常に終了しました。

C:\>henkou.bat 1>c:\henkou結果.txt
--------------------------------------

以下のようなWindowsユーザーのパスワード変更batの結果(正常に出来たかどうか?)をCドライブに吐き出したいのですが、どうbatファイルを書き換えればよいでしょうか?
(とりあえず以下の内容でbatをたたいたのですが、うまく結果が出ません。。。)

henkou.bat
--------------------------------------
net user "test user1" ps123456 /domain
net user "test user2" ps456789 /domain
henkou.bat > c:\henkou結果.txt
pause
--------------------------------------

吐き出されたhenkou結果.t...続きを読む

Aベストアンサー

henkou.bat
--------------------------------------
@ECHO OFF

IF NOT EXIST %temp%\Redirect.txt GOTO REDIREXEC

@ECHO ON

net user "test user1" ps123456 /domain
net user "test user2" ps456789 /domain

@ECHO OFF

GOTO END

:REDIREXEC

ECHO REDIRECT > %temp%\Redirect.txt

CALL TEST.BAT > c:\henkou結果.txt

DEL %temp%\Redirect.txt

PAUSE

:END
--------------------------------------

こんな感じでどうでしょうか。

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。

Qバッチからsqlplusの接続エラーの検知について

バッチからsqlplusの接続エラーの検知について

環境:Xp、Oracle11g

バッチからsqlpulusを起動してPL/SQLを動かしてるのですが
DB接続に失敗した時に%ERRORLEVEL%では接続エラー時には
0が戻ってきてしまいエラーを検知できませんでした。

DB接続に失敗した場合、検知する方法を模索しております。

識者の方、助言を頂ければ幸いです。

Aベストアンサー

今、環境が無くて確認できないんですが、
sqlplus -L /nolog
WHENEVER OSERROR exit 9
WHENEVER SQLERROR exit 9
connect ユーザ名/パスワード
ではどうでしょうか?特にsqlplusの-Lオプションは使えそうな感じですが。

Q3つの表の外部結合

表A、B、Cの3つがあり、Aのすべての行を出力したいと考えています。
外部結合を用いるのだとは思うのですが、3つの表に対して行う場合の
書き方がわからず困っています。
ご教授いただけないでしょうか?
select * from a,b,c
where a.商品ID =b.商品ID (+) and b.商品ID (+) =c.商品ID (+)
としてみましたが、うまくいきませんでした。

Aベストアンサー

ansi構文の趣旨からいえば、結合条件と絞り込み条件は分けて書くので・・

select *
from a
left join b on (a.商品ID =b.商品ID)
left join c on (b.商品ID =c.商品ID)
where a.年月 = 任意の値

と書くのが一般的でしょうね。

QSYSユーザーでログインしたい

SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
お願いします。

Aベストアンサー

>SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
特別なことする必要がないと思います。
ログインできない場合いろいろな原因が考えられます。
一番可能な原因は設定によってSYSユーザーNOMAL権限でログインできない場合あります。
この場合
sqlplus sys/パスワード@接続文字列 as sysdba
で試してください。


>SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
conn sys/パスワード@接続文字列 as sysdba


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング