親子におすすめの新型プラネタリウムとは?

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

SQL>@sample1

としても

SQL>@sample1
SQL>

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

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

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

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

A 回答 (3件)

sample1というファイルはどこのフォルダにありますか?


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

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

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

k_o_r_o_c_h_a_nさんのおっしゃるとおり、ファイルそのものが見つからないと、エラーが出ますね。

失礼しました。

@sample1
を実行する前に
set echo on
を実行してから@sample1を実行してみてはどうでしょう?
ファイルの中身が表示された上でSQLが実行されます。

# ファイルの中身がpl/sqlなら最後の行に"/"が入っていないだけかも・・・

@sample1を実行した後に/を入力するとどうなりますか?
    • good
    • 0
この回答へのお礼

ossan_hiroさんに教えていただいたとおりにフルパスで指定するとすんなりと動きました。

デスクトップ上に保存していたので、そのまま@sampleで実行してくれると思いこんでいました。。
C直下+フルパスでなんとかなりました。

教えていただいたset echo onも試して併せて動作確認できました。

のっけから躓いてゴロゴロ転がっていましたけど、おかげさまで助かりました。

ご親切に回答していただき、本当にありがとうございました。

お礼日時:2006/07/06 22:03

SQL*PLUSで、ファイルが存在しない場合、


「SP2-0310: ファイル"sample.sql"をオープンできません。」
というエラーになります。

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

ファイルが存在して、中身がカラだと、そのような挙動をしますが、
そういうことではないですか?
    • good
    • 1
この回答へのお礼

本のサンプルを丸写ししていたのですが、set serveroutput onを事前にしていないと文字列が出力されないということに気づきませんでした。

SP2-0310エラーですが、
@C:\Documents and Settings\rupin\デスクトップ\sampleと指定すると出ます。
C直下に置いてフルパスを指定すると問題なかったのですが。。。
もう少しドタバタしながら勉強していきます。
ご親切にありがとうございました。

お礼日時:2006/07/06 22:11

このQ&Aに関連する人気のQ&A

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

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

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

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

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

Qbatファイルからsql文実行

クライアント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
に接続されました。

Aベストアンサー

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

参考URL:http://biz.rivus.jp/sqlplus_overview.html

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

で確認ができる。

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')

と書くべきでしょうね。

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;を指摘してます。
私もそれと疑いますが。

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/...続きを読む

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

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

Aベストアンサー

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


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

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.年月 = 任意の値

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

Qデータベース内のテーブル名の取得

お世話になります。
初心者的な質問でしたらすいません。
SQL文にてデータベース内のテーブル名を
調べることができると聞いたことがあるのですが、
可能でしょうか。

もし、可能であれば、SQLの記述を教えてください。
お願いします。

Aベストアンサー

select * from tab;

私の場合、テーブル名だけ手っ取り早く知りたいとき、↑を打ちます。その他の情報も知りたいときは#2さんの仰るとおり、user_tablesで取得します。

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

QSQL実行結果の出力を見やすくしたい

Oracle 10gを使用して勉強をしています。
SQL実行結果の出力が見にくくて困っています。
以下、(1)は自分が実行したSQL文ですが、(2)のように見やすく出力したいです。

どのようにすればよいのでしょうか?
また参考となるWEB URLがある場合、頂けたら嬉です。

(1)自分が実行したSQL文
SQL> select
2 sid,serial#,username,osuser,program,machine,terminal
3 from v$session
4 where type = 'USER';

SID SERIAL# USERNAME
---------- ---------- ------------------------------
OSUSER PROGRAM
------------------------------ ------------------------------------------------
MACHINE
----------------------------------------------------------------
TERMINAL
------------------------------
543 39 SYS
oracleuser sqlplus@HOGE-net (TNS V1-V3)
HOGE-net
pts/1


SID SERIAL# USERNAME
---------- ---------- ------------------------------
OSUSER PROGRAM
------------------------------ ------------------------------------------------
MACHINE
----------------------------------------------------------------
TERMINAL
------------------------------
544 5 SYS
oracleuser sqlplus@HOGE-net (TNS V1-V3)
HOGE-net
pts/0


(2)こんな感じで出力させたいです。
select
sid,serial#,username,osuser,program,machine,terminal
from v$session
where type = 'USER';

SID SERIAL# USERNAME OSUSER PROGRAM  MACHINE   TERMINAL
---- ------- --------- ------ ---------- ---------  --------
139     2      TEST Owner sqlplus.exe   HOGE_XP HOGE_XP
144     20    SYSTEM      ORACLE.EXE HOGE_XP  HOGE_XP

Oracle 10gを使用して勉強をしています。
SQL実行結果の出力が見にくくて困っています。
以下、(1)は自分が実行したSQL文ですが、(2)のように見やすく出力したいです。

どのようにすればよいのでしょうか?
また参考となるWEB URLがある場合、頂けたら嬉です。

(1)自分が実行したSQL文
SQL> select
2 sid,serial#,username,osuser,program,machine,terminal
3 from v$session
4 where type = 'USER';

SID SERIAL# USERNAME
---------- ---------- ---------------------------...続きを読む

Aベストアンサー

set pages 10000 lines 10000 trims on
col username for a30
col osuser for a30
col program for a30
col machine for a30
col terminal for a30

select
sid,serial#,username,osuser,program,machine,terminal
from v$session
where type = 'USER';

こんな感じでどうですか?
ちなみに、a30は30文字分の幅という意味です。
number 型のデータの場合には指定方法がかわりますが、
number 型はそのままでも表示が乱れることはあまりないので、
それほど気にしなくてもよいでしょう。


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

人気Q&Aランキング