OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

PLSQLでファイルに書き込みをしたいけど出来ない。。

  • 暇なときにでも
  • 質問No.115888
  • 閲覧数1366
  • ありがとう数5
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 50% (183/364)


とっても、初心者です。

本日、初めての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;
=====================================

通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル9

ベストアンサー率 19% (15/78)

久しぶりだし、コンパイルも通してないので合ってるかどうかわかりませんが。

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;

コンパイル通らなかったら改修お願いします。。。
実行できない場合は。。。どうしましょう??
お礼コメント
nsakurako

お礼率 50% (183/364)


ありがとーございました。

早速、コンパイルして実行してみました。
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
==バッチ==============================


投稿日時 - 2001-08-09 11:21:10
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.2
レベル9

ベストアンサー率 19% (15/78)

UTL_FILEはサーバにファイルを出力する方法です。 ローカルにファイルを作成したいのであればTEXT_IOを使用します。 環境はどうなっていますでしょうか? ...続きを読む
UTL_FILEはサーバにファイルを出力する方法です。
ローカルにファイルを作成したいのであればTEXT_IOを使用します。
環境はどうなっていますでしょうか?
お礼コメント
nsakurako

お礼率 50% (183/364)



ご指摘をありがとーございます。

現在の環境は、自分のPCにオラクルを入れてますので、どちらでもOKです。
実際には、サーバ君は別になりますが、ひとまず、ファイルが出来るのであれば、
どちらでも大丈夫と思います。

でも、やっぱり、ローカルに出来た方が便利ですよね。

text_ioも、試してみます。
ありがとーございました!!!! (*^0^*)

投稿日時 - 2001-08-09 13:17:10
  • 回答No.3
レベル9

ベストアンサー率 19% (15/78)

そう言えば・・・ プログラムを実行してます?? ストアドを登録しただけじゃないですか? Create_US_Company; (で実行できると思います。) で、実行してみて下さい。 ...続きを読む
そう言えば・・・
プログラムを実行してます??
ストアドを登録しただけじゃないですか?

Create_US_Company;

(で実行できると思います。)
で、実行してみて下さい。
お礼コメント
nsakurako

お礼率 50% (183/364)



そうだったんですね。
そうかなって、思っていたのですが、どうしたら実行出来るのやらわからなくって。

で、実行してみました。

でも、駄目でした。

っと、言うのも、このコマンドはどこで実行すればよいのでしょうか??

ひとまず、作成したバッチの最後に追加してみましたが、「SQL文が無効です。」と
エラーメッセージが出てしまいました。

DOSを開いて、実行してみたのですが、パスが悪いのか、どうか?
やはり、同じエラーが出てしまいます。

また、SQLPlusでも実行してみたのですが、結果は同じでした。。。。

くっすん。(T。T;)

大変に、お手数をお掛けいたしますが、どうか、良きアドバイスをどうぞ宜しくお願い致します。 

がんばります。

投稿日時 - 2001-08-09 13:25:26
  • 回答No.4
レベル11

ベストアンサー率 49% (139/279)

SQL*PLUSで BEGIN Create_US_Company; END; / ですね。 ところで、init.oraで、UTIL_FILE_DIRの設定は してます?
SQL*PLUSで

BEGIN
Create_US_Company;
END;
/

ですね。
ところで、init.oraで、UTIL_FILE_DIRの設定は
してます?
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ