• 締切済み

PL/SQL ストアドプロシージャが実行できません

はじめまして、ほんの最近プログラムの世界に入ったキグと申します。 2週間、インターネットや参考書(ポケットリファレンス、PL/SQL入門)などで調べていたのですが分かりませんでしたので質問させていただきます。 ORACLE11gパーソナルエディションでやっています。 (CSEで作成実行しました。) **************************** 作ったSQL文 CREATE OR REPLACE PROCEDURE PRO_1 IS BEGIN (実行確認できたSELECT文) END ※試してみたこと、 SELECT文の列指定はアスタを使わずに書きました。 AUTHID CURRENT_USERをプロシージャ作成のときに入れてみました。  **************************** EXEC PRO_1 エラー→構文エラーまたはアクセス違反です。 BEGIN PRO_1; END; エラー→オブジェクト'PRO_1'が無効です。 上記エラーが出まして実行できていない状態です。 解決方法が分かる方いらっしゃいましたら、ぜひ回答を お願いしたいです。 以上よろしくお願い申し上げます。

みんなの回答

  • Goyataku
  • ベストアンサー率0% (0/0)
回答No.5

その作成されたプロシージャを一旦削除した後にもう一度実行してみてはどうでしょうか?

すると、全ての回答が全文表示されます。
回答No.4

create or replace procedure pro_1 as a varchar2(2000); begin select dummy into a from dual; end; プロシージャが作成されました(124 msec.)

すると、全ての回答が全文表示されます。
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

ざっと見て ・文の区切りに「;」が必要です。 ・oracleのストアドではselect文で一行のみのデータを取得する場合  「SELECT AGE into wk_age FROM M_AGE;」  のように「into」が必要です。 ・oracleのストアドプロシージャはMS SQLSERVERのように、SELECT文  そのままを記述して結果を返すことはできません ですのでストアドを使って何をするのかによってやり方は大きく異なって きます。 具体的にどういうことをしたいのでしょうか?

すると、全ての回答が全文表示されます。
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

「CREATE OR REPLACE PROCEDURE PRO_1」でコンパイルエラー出てませんか? CSEではなくSQL*PLUSで実行してみてください。 後、できれば > (実行確認できたSELECT文) の部分も省略せずに補足したほうがいいと思いますよ。

kignus
質問者

補足

ありがとうございます。 SQL*PLUSで SQL>CREATE OR REPLACE PROCEDURE PRO_1 2 IS 3 BEGIN 4 SELECT AGE FROM M_AGE 5 END 6 / を実行したところ 「プロシージャは作成しましたがコンパイルエラーがあります。」 と出ました。

すると、全ての回答が全文表示されます。
  • Kazma_hk
  • ベストアンサー率26% (115/428)
回答No.1

プロシージャ自体は、Oracle上に作成されていますでしょうか? でそのプロシージャでコンパイルエラーとかはないでしょうか?

kignus
質問者

補足

先ほどSQL*PLUSで確認してみたところ。 プロシージャは作成されましたが、コンパイル・エラーがあります。 とでました。

すると、全ての回答が全文表示されます。

関連するQ&A