☆
とっても、初心者です。
本日、初めての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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- UNIX・Linux Linuxの実行結果を修正したいです。 6 2022/11/22 12:57
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- オープンソース stable diffusionのインストールがうまくいきません。 1 2023/06/20 13:09
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
PL/SQLでSPOOLさせたいのですが、可能でしょうか?
Oracle
-
OracleのTEXT_IOについて
Oracle
-
ファイルへの書き込みができない
Oracle
-
-
4
PL/SQLでログを確認したい。
Oracle
-
5
ORA-29280:無効なディレクトリ・パスです
Oracle
-
6
PL/SQLのコンパイルエラーについて(ignored)
Oracle
-
7
PL/SQLカーソルの2重FORループができません
Oracle
-
8
Oracleでの文字列連結サイズの上限
Oracle
-
9
バッチファイルを使用したsql@plusの実行及びログ出力について
Oracle
-
10
ORA-01858: 数値を指定する箇所に数値以外の文字が指定されています
Java
-
11
select句副問い合わせ 値の個数が多すぎます
Oracle
-
12
PL/SQL PLS-00103エラーについて
Oracle
-
13
pl/sqlでselect文の結果をCSV出力しようとしています。(o
Oracle
-
14
バッチファイル 二つ上のディレクトリのパス取得
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLPLUSで結果を画面に表示しない
-
AccessからExcelのファイルを起...
-
動的にSPOOLファイルのファイル...
-
ストアドプロシージャの出力に...
-
ORACLEから各テーブルをCSV形式...
-
ORACLEのUTL_FILEパッケ...
-
レポートをpdfに変換する方法
-
DB2のコマンドラインexportで複...
-
リスナーのトレースについて
-
プロファイラを裏で実行継続す...
-
selectした結果の余計な余白を...
-
【Excel】[Expression.Error] ...
-
特定のエクセルファイルを起動...
-
Batch: フォルダ内の特定のファ...
-
VBAでCSVファイルが使用中かど...
-
共有フォルダに誰が何にアクセ...
-
ACCESS で 項目名を出力せずに...
-
月が変わったら自動でシートが...
-
エクセルで縦のカラムデータを...
-
100万行のCSVを10万行ずつのフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLPLUSで結果を画面に表示しない
-
selectした結果の余計な余白を...
-
AccessからExcelのファイルを起...
-
動的にSPOOLファイルのファイル...
-
ORACLEから各テーブルをCSV形式...
-
Oracleでインスタンスを複数に...
-
dmpファイルをインポートせずに...
-
ストアドプロシージャの出力に...
-
mod_plsql使用時のDBMS_OUTPUT....
-
レポートをpdfに変換する方法
-
Accessのレポート出力をWordに...
-
PLSQLでファイルに書き込みをし...
-
DB2のコマンドラインexportで複...
-
SQL*PLUSで 定期的にSQLを発行...
-
sqliteはExcelと連携できますか?
-
DB2にspoolコマンドみたいなの...
-
sqlplusの操作をシェル上で
-
batファイルからsql文実行
-
AccessでPDFが開けない
-
SQL*PLUSでファイルからDELETE文
おすすめ情報