ストアドプロシージャを登録したところ、「EXCEPTION」キーワードをORACLEが
認識してくれずエラーが返ってきました。どうしてか教えて下さい。
よろしくお願いします
プロシージャのコード)
CREATE OR REPLACE PRCEDURE TEST_PROC(
P1 OUT NUMBER,
P2 OUT VARCHAR2 ) AS
BEGIN
UPDATE VIEW経理システム制御F SET 処理状況 = '';
COMMIT;
EXCEPTION WHEN OTHERS THEN
P1 := SQLCODE;
P2 := SQLERRM;
END;
/

登録時のメッセージ)
エラー行: 1: エラーが発生しました。
ORA-00922: オプション指定されていないか、または無効です
不明なコマンドです(開始"EXCEPTION ...")。行の残りは無視されました。
不明なコマンドです(開始"P1 := SQLC...")。行の残りは無視されました。
不明なコマンドです(開始"P2 := SQLE...")。行の残りは無視されました。
不明なコマンドです("END")。行の残りは無視されました。

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

A 回答 (2件)

こんにちは。



1行目で、エラーなのでそもそも、プロシージャ構文では無いでしょうか?

ORACLEって、パッケージにしなければならないのでは???
  ↑
ウチのプロジェクト中の勝手なルールかも(^^;

とりあえず、パッケージにしてみてはどうでしょう。
TEST_PACKという、パッケージにする例

CREATE OR REPLACE PACKAGE BODY TEST_PACK AS
  PROCEDURE TEST_PROC( 
  P1 OUT NUMBER,
  P2 OUT VARCHAR2 ) AS
  BEGIN
  UPDATE VIEW経理システム制御F SET 処理状況 = '';
  COMMIT;
  EXCEPTION WHEN OTHERS THEN
  P1 := SQLCODE;
  P2 := SQLERRM;
END TEST_PACK;
/

では、だめですか?
目的と違うかもしれませんが・・・。
なんか、動いているのを見ると、どうも、ウチのはパッケージになってるようなので。

参考になれば、でわ。
    • good
    • 0

Haizyさんの言うとおり、1行目で構文エラーです。


PROCEDUREの綴りが間違っているように見えますが。。。
ここに記載した内容が間違っているだけでしょうか?

Haizyさんへ。
パッケージでなくても、例外処理は記載できます。
パッケージで作成しているのは、プロジェクト内での
コーディングルール等ではないのでしょうか?
    • good
    • 0

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

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

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

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

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

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

QDataSet ds = new DataSet();

DataSet ds = new DataSet();
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);

でデータを格納したときに、
重複データを省きたいのですが可能でしょうか?

DataReader
ならひとつひとつ格納していくので、
重複データを省くことができるのですが。

Aベストアンサー

最近プログラム書いていないので間違っていたらすいません。

da.SelectCommand = cmd でデータを取得するSQL文(Select文)をセットしていると思いますが、そのSelect文にdistinctキーワードをつけてSQLの段階で重複を省けばいいのではと思います。

QSQL: insert/importコマンドの違い

基本的なことを聞いてすみませんが、insertコマンドとimportコマンドの違いは何でしょうか?使い方について教えてください。importコマンドにもinsertオプションがあり、混乱しています。。

Aベストアンサー

RDBMSは、何ですか?

Qマクロの「アクション:コマンドの実行」の使い方

アクセス2003、windows-xpを使っています。

どうしてもわかりません。教えてください!!

フォームの中にボタンを作成します。
そのボタンをクリックすると、その都度"追加クエリAが作成され、更新クエリを走らせ、またその追加クエリAを消去させる"ということをしたいと思いました。

そこで、マクロを見たら「アクション」に「コマンドの実行」を表示させると、「コマンド」欄に「追加クエリの作成」というのがでてきました。
これだ!と思いやってみたのですが、エラーになってしまいます。
どうしたら、マクロの中にある、「コマンドの実行」というマクロを使うことができるのでしょうか?

(いまいち、マクロにあるアクションの組み立て方が判らないのですが、参考になりそうなサイトはないでしょうか?)

なんとか、みなさんにご相談しながらアクセスで集計システムを作成しておりますが、自分のアクセスレベルの低さにはがゆさを感じている次第です。
どなたかおわかりになりましたら、教えてください。
宜しくお願い致します。

Aベストアンサー

 動作の度にクエリを作成するのですか?1つのクエリを
条件式をパラメータ化することで回避できたりしません?
追加先が一定の場合なら、条件式を操作するだけになる
と思うので、一度検討してみては?
 ちなみにコマンドの実行って、新規にクエリのウィザー
ドが開くだけで、決まったクエリの内容を自動生成する訳
ではないです。メニューバーにある内容を選択できると
いった機能です。

QAccess2002:コマンドボタンがうまく設定できません

使い始めてから2週間目の初心者です。よろしくお願いします。

コマンドボタンウィザードでフォーム上にコマンドボタンを作成したのですが、クリックしても反応しません。

初めは問題なく作成できたのですが、突如としてうまく動作するボタンが作成できなくなってしまいました。
ウィザードで作成した「レコードの検索」ボタンですら無反応です。
あるフォームのイベントプロージャ(?)は以下のようになっています。
(★はコメントです)


Option Compare Database

Private Sub テスト15:09_Click()

End Sub

Private Sub 部番一覧→部番詳細フォーム_Click()★←正しく動作しているボタン★
On Error GoTo Err_部番一覧→部番詳細フォーム_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "部番詳細表示"

stLinkCriteria = "[部番]=" & "'" & Me![部番] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_部番一覧→部番詳細フォーム_Click:
Exit Sub

Err_部番一覧→部番詳細フォーム_Click:
MsgBox Err.Description
Resume Exit_部番一覧→部番詳細フォーム_Click

End Sub←★この下に区切り線が表示されません★
Private Sub テスト15:09_Click()★←無反応のボタン。文字色赤になっています★
On Error GoTo Err_テスト15:09_Click


Screen.PreviousControl.SetFocus
DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

Exit_テスト15:09_Click:
Exit Sub

Err_テスト15:09_Click:
MsgBox Err.Description
Resume Exit_テスト15:09_Click

End Sub


単純ミスだと思うのですが、原因がわかりません。
どなたかわかりやすく教えいただけないでしょうか。ちなみにVBの知識は皆無です。よろしくお願いします。

使い始めてから2週間目の初心者です。よろしくお願いします。

コマンドボタンウィザードでフォーム上にコマンドボタンを作成したのですが、クリックしても反応しません。

初めは問題なく作成できたのですが、突如としてうまく動作するボタンが作成できなくなってしまいました。
ウィザードで作成した「レコードの検索」ボタンですら無反応です。
あるフォームのイベントプロージャ(?)は以下のようになっています。
(★はコメントです)


Option Compare Database

Private Sub テスト15:09_Cli...続きを読む

Aベストアンサー

> End Sub←★この下に区切り線が表示されません★
> Private Sub テスト15:09_Click()★←無反応のボタン。文字色赤になっています★

ということですと、「テスト15:09」という名前のコントロールの、名前の付け方がひっかかっているのではないでしょうか?特に「:」の部分です。

通常、コントロールの名前に記号など(%、”、$、&、!、:、。、などなど…)を使うと今回の例のように「何かの拍子に」文字色赤になって動かなくなります。

何かの拍子…というのは、mdbファイルを別のパソコンにコピーしてコピー後のmdbを開いたり、強制終了させておかしくなったり・・・などです。

直すには、いったんプロシージャを消して、mdbファイルを起動しなおし、もう一度コントロールのプロパティの該当するイベントから入りなおし、プログラムコードを書くことです。いったんmdbを起動し直せば、コードを書くのはコピペでOKです。

今回の場合ですと、「Private Sub テスト15:09_Click()」から最後の「End sub」までを全ていったん消します。で、mdbを再起動させたあとに、もう一度コントロールのプロパティからクリックイベントを開いて、

On Error GoTo Err_テスト15:09_Click
Screen.PreviousControl.SetFocus
DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
Exit_テスト15:09_Click:
Exit Sub
Err_テスト15:09_Click:
MsgBox Err.Description
Resume Exit_テスト15:09_Click

の部分をコピペします。

************************************

ただ、コントロール名が同じままだと、この問題は再度繰り返し出てきます。

なので、この際、コントロールの名前を変えてから(:を使わない名前に変えてから)、コードをコピペするといいと思います。

また、このようなトラブルは、連結フォーム(連結テキストボックス)にありがちなトラブルですので、テーブルを作る時点で、フィールドの名前の付け方に注意しないといけない…ということにもなります。

まったくの見当違いでしたらごめんなさい。

> End Sub←★この下に区切り線が表示されません★
> Private Sub テスト15:09_Click()★←無反応のボタン。文字色赤になっています★

ということですと、「テスト15:09」という名前のコントロールの、名前の付け方がひっかかっているのではないでしょうか?特に「:」の部分です。

通常、コントロールの名前に記号など(%、”、$、&、!、:、。、などなど…)を使うと今回の例のように「何かの拍子に」文字色赤になって動かなくなります。

何かの拍子…というのは、mdbファイルを別のパソコンにコピーし...続きを読む

QSQL*Plus:SPOOLコマンドでのSQL出力

Oracle SQL*Plusで、SPOOLコマンドを使用すると、SQL実行の結果はファイルに出力されますが、実行したSQL自身が出力されません。
SETコマンドで制御できるのではないかと思いましたが、ちょっと見当たりませんでした。
何か方法はないでしょうか?
よろしくお願いします。

Aベストアンサー

SET ECHO {ON|OFF}
っていうのがあったと思いますよ

詳しくはマニュアルを参照して下さい


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

人気Q&Aランキング

おすすめ情報