dポイントプレゼントキャンペーン実施中!


とっても、初心者です。

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

A 回答 (4件)

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



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;

コンパイル通らなかったら改修お願いします。。。
実行できない場合は。。。どうしましょう??
    • good
    • 0
この回答へのお礼


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

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

SQL*PLUSで



BEGIN
Create_US_Company;
END;
/

ですね。
ところで、init.oraで、UTIL_FILE_DIRの設定は
してます?
    • good
    • 0

そう言えば・・・


プログラムを実行してます??
ストアドを登録しただけじゃないですか?

Create_US_Company;

(で実行できると思います。)
で、実行してみて下さい。
    • good
    • 0
この回答へのお礼



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

で、実行してみました。

でも、駄目でした。

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

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

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

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

くっすん。(T。T;)

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

がんばります。

お礼日時:2001/08/09 13:25

UTL_FILEはサーバにファイルを出力する方法です。


ローカルにファイルを作成したいのであればTEXT_IOを使用します。
環境はどうなっていますでしょうか?
    • good
    • 0
この回答へのお礼



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

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

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

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

お礼日時:2001/08/09 13:17

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

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

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