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

はじめまして、ほんの最近プログラムの世界に入ったキグと申します。
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'が無効です。

上記エラーが出まして実行できていない状態です。
解決方法が分かる方いらっしゃいましたら、ぜひ回答を
お願いしたいです。

以上よろしくお願い申し上げます。

A 回答 (5件)

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

    • good
    • 0

create or replace procedure pro_1


as
a varchar2(2000);
begin
select dummy into a from dual;
end;

プロシージャが作成されました(124 msec.)
    • good
    • 0

ざっと見て


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

「CREATE OR REPLACE PROCEDURE PRO_1」でコンパイルエラー出てませんか?


CSEではなくSQL*PLUSで実行してみてください。
後、できれば
> (実行確認できたSELECT文)
の部分も省略せずに補足したほうがいいと思いますよ。

この回答への補足

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

補足日時:2009/08/04 11:45
    • good
    • 0

プロシージャ自体は、Oracle上に作成されていますでしょうか?



でそのプロシージャでコンパイルエラーとかはないでしょうか?

この回答への補足

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

補足日時:2009/08/04 11:53
    • good
    • 0

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