
☆
とっても、初心者です。
本日、初めてのPLSQLプルグラムを書いてみました。
下記のプログラムがそうなのですが、SQL*Plusを起動し、
START XXXXXX (←作成したSQL文の名前)
と書いて実行して見ましたが、エラーは出ないのですが、私の希望では、[test.ddl]ファイルにsakurakoっと出力されていて欲しいのですが、なんにも更新されていません。。。
LOG:プロシージャが作成されました。
LOG:エラーはありません。
何か方法がまずいのでしょうか?
あぁぁ、、何方かよきアドバイスをお願い致します。
=====================================
CREATE OR REPLACE PROCEDURE Create_US_Company IS
CURSOR WORK_LINE IS
SELECT * FROM TEST.US_COMPANY;
TYPE FILE_TYPE IS RECORD (ID BINARY_INTEGER);
FILE_HANDLE UTL_FILE.FILE_TYPE := UTL_FILE.FOPEN('D:\tmp,'test.ddl','w');
STR VARCHAR2(200);
BEGIN
STR := 'SAKURAKO';
UTL_FILE.PUT_LINE ( FILE_HANDLE, STR);
UTL_FILE.FCLOSE (FILE_HANDLE);
END Create_US_Company;
=====================================
☆
No.1ベストアンサー
- 回答日時:
久しぶりだし、コンパイルも通してないので合ってるかどうかわかりませんが。
CREATE OR REPLACE PROCEDURE Create_US_Company IS
-- ファイルハンドル
FILE_HANDLE UTL_FILE.FILE_TYPE;
-- ファイルパス
FILE_PATH VARCHAR2(100) := 'D:\tmp';
-- ファイル名
FILE_NAME VARCHAR2(100) := 'test.ddl';
-- 出力用文字列
STR VARCHAR2(200);
BEGIN
-- ファイルのオープン
FILE_ID := UTL_FILE.FOPEN(FILE_PATH,FILE_NAME,'W');
STR := 'SAKURAKO';
-- ファイルへ出力
UTL_FILE.PUT(FILE_HANDLE,STR);
-- 改行
UTL_FILE.NEW_LINE(FILE_HANDLE);
-- ファイルのクローズ --
UTL_FILE.FCLOSE(FILE_HANDLE);
END Create_US_Company;
コンパイル通らなかったら改修お願いします。。。
実行できない場合は。。。どうしましょう??
☆
ありがとーございました。
早速、コンパイルして実行してみました。
1つだけ、エラーが出たので、下記のようにしてみましたが大丈夫でしょうか?
-- ファイルのオープン
FILE_ID := UTL_FILE.FOPEN(FILE_PATH,FILE_NAME,'W');
↓↓
FILE_HANDLE := UTL_FILE.FOPEN(FILE_PATH,FILE_NAME,'W');
これで、バッチファイルを作成し、実行してみたのですが、
ログには、
○プロシージャが作成されました。
○エラーはありません。
とはなるのですが、ファイルへの書き込みはされていません。。。
何が悪いのでしょうか??
実行のさせ方が変ですか????
どうかどうか、宜しくお願い致します。
==バッチ==============================
D:
CD D:\work\
sqlplus -S test/test@test @test.sql > sakurako.log
==バッチ==============================
☆
No.4
- 回答日時:
SQL*PLUSで
BEGIN
Create_US_Company;
END;
/
ですね。
ところで、init.oraで、UTIL_FILE_DIRの設定は
してます?
No.3
- 回答日時:
そう言えば・・・
プログラムを実行してます??
ストアドを登録しただけじゃないですか?
Create_US_Company;
(で実行できると思います。)
で、実行してみて下さい。
☆
そうだったんですね。
そうかなって、思っていたのですが、どうしたら実行出来るのやらわからなくって。
で、実行してみました。
でも、駄目でした。
っと、言うのも、このコマンドはどこで実行すればよいのでしょうか??
ひとまず、作成したバッチの最後に追加してみましたが、「SQL文が無効です。」と
エラーメッセージが出てしまいました。
DOSを開いて、実行してみたのですが、パスが悪いのか、どうか?
やはり、同じエラーが出てしまいます。
また、SQLPlusでも実行してみたのですが、結果は同じでした。。。。
くっすん。(T。T;)
大変に、お手数をお掛けいたしますが、どうか、良きアドバイスをどうぞ宜しくお願い致します。
がんばります。
☆
No.2
- 回答日時:
UTL_FILEはサーバにファイルを出力する方法です。
ローカルにファイルを作成したいのであればTEXT_IOを使用します。
環境はどうなっていますでしょうか?
☆
ご指摘をありがとーございます。
現在の環境は、自分のPCにオラクルを入れてますので、どちらでもOKです。
実際には、サーバ君は別になりますが、ひとまず、ファイルが出来るのであれば、
どちらでも大丈夫と思います。
でも、やっぱり、ローカルに出来た方が便利ですよね。
text_ioも、試してみます。
ありがとーございました!!!! (*^0^*)
☆
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLPLUSで結果を画面に表示しない
-
mysqlのCSV出力について
-
selectした結果の余計な余白を...
-
Oracleでインスタンスを複数に...
-
mod_plsql使用時のDBMS_OUTPUT....
-
動的にSPOOLファイルのファイル...
-
Accessのレポート出力をWordに...
-
【Excel】[Expression.Error] ...
-
Accessのmdb分析(解析)方法ま...
-
Accessで以下のシステムを1か...
-
特定のエクセルファイルを起動...
-
Access2003 デザインモードで...
-
.dbfファイルの急増
-
エクセルで縦のカラムデータを...
-
VBAでCSVファイルが使用中かど...
-
ThunderbirdのメールをCSVでま...
-
アクセスでcsvに出力した際、頭...
-
アクセスクエリ(複数)→マクロ...
-
タブ区切りデータからダブルコ...
-
月が変わったら自動でシートが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLPLUSで結果を画面に表示しない
-
selectした結果の余計な余白を...
-
AccessからExcelのファイルを起...
-
dmpファイルをインポートせずに...
-
Oracleでインスタンスを複数に...
-
ストアドプロシージャの出力に...
-
動的にSPOOLファイルのファイル...
-
実行したSQLファイルの名前をフ...
-
SQL*PLUSで 定期的にSQLを発行...
-
sqlplusの操作をシェル上で
-
Accessのレポート出力をWordに...
-
レポートをpdfに変換する方法
-
リスナーのトレースについて
-
sqliteはExcelと連携できますか?
-
ORACLEから各テーブルをCSV形式...
-
DB2にspoolコマンドみたいなの...
-
SQLServer2005でSELECTした結果...
-
SQL*PLUSでファイルからDELETE文
-
DB2のコマンドラインexportで複...
-
Oracle8i データをファイルに出力
おすすめ情報