人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBからPL/SQLを実行する際に以下のエラーが発生します。
これは、権限の問題でしょうか?
教えていただければ助かります。
よろしくお願いします。

『エラー内容』
Oracle Automation:440:SQL実行エラー, ORA-06550: 行1、列8:
PLS-00201: 識別子PK_AAAAAA.P_BBBBBを宣言してください。
ORA-06550: 行1、列8:
PL/SQL: Statement ignored
:PK_AAAAAA.P_BBBBB:::"

環境:
Oracle9i
Window2000
VisualBasic6.0

●質問者: hate_na012345
●カテゴリ:コンピュータ
✍キーワード:Oracle PL/SQL SQL VB エラー
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● きゃづみぃ
●23ポイント

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_s24.htm

バインド変数を利用してますでしょうか?

利用していたら宣言して設定してあげないとダメかと思います。

◎質問者からの返答

ご回答ありがとうございました。


2 ● mj99
●23ポイント

PK_AAAAAAはスキーマ名ですか?パッケージ名ですか?

----

PK_AAAAAAがスキーマ名だと仮定して、エラーが考えられるのは、、、

1.PK_AAAAAAのつづりが間違っている

2.P_BBBBBのつづりが間違っている

3.VBで接続しているスキーマからP_BBBBBに実行権限がない

権限付与は、SQL*PlusなどでPK_AAAAAAに接続して、

grant execute on PK_AAAAAA to XXXXX

(XXXXXはVBで接続しているスキーマ)

----

PK_AAAAAAがパッケージ名だと仮定して、エラーが考えられるのは、、、

1.P_BBBBBのつづりが間違っている

2.PK_AAAAAAがVBで接続しているスキーマとは別のスキーマにある

・外部スキーマパッケージの呼び出しは、

例えば、

begin SCOTT.PK_AAAAAA.P_BBBBB; end;

3.パッケージ仕様が作成されてない

・パッケージは仕様と本体の2つが必要

CREATE PACKAGE PK_AAAAAA

CREATE PACKAGE BODY PK_AAAAAA

◎質問者からの返答

PK_AAAAAAはパッケージ名です。

おそらく、権限の問題でエラーが発生している問い思います。

VBからはSCOTTユーザでアクセスしております。


3 ● mj99
●22ポイント

>PK_AAAAAAはパッケージ名です。

>VBからはSCOTTユーザでアクセスしております。


VBでSCOTTにアクセスして、SCOTT上のパッケージを呼び出そうとしているのですね。

その状態で「宣言してください」とエラーになるのは、パッケージ仕様にプロシージャの宣言がないからだと思われます。

パッケージ仕様はこんな感じで、

CREATE OR REPLACE PACKAGE PK_AAAAAA
IS
 PROCEDURE P_BBBBB(arg1 IN NUMBER, ....);
END;
/
◎質問者からの返答

ご回答ありがとうございます。

上記の返信は、返信文を記載途中に送信してしまい。中途半端になってしまいました。すみません。

・VBからはSCOTTでアクセスしています。

・パッケージは、SYSに登録されています。

・プロシージャの宣言はしております。

実行ユーザにExecute権限をつけなさいと書いているページがあるのですが、この場合、SCOTTユーザのロールにEXECUTE_CATALOG_ROLE権限、システム権限に、EXECUTE ANY といつくものを累加させるということで大丈夫でしょうか?


4 ● mj99
●22ポイント

>・パッケージは、SYSに登録されています。

sysに最初からある既存のパッケージでしょうか?

それでしたら、EXECUTE_CATALOG_ROLEロールがあれば大概のものは実行できます。

SCOTTにEXECUTE_CATALOG_ROLEを付与してください。

(sysに接続して、)

grant EXECUTE_CATALOG_ROLE to scott

----

sysに自前のプロシージャを登録してそれを実行したいのであれば、オブジェクト権限を付与してください。

(sysに接続して、)

grant execute on sys.PK_AAAAAA to SCOTT

----

どちらにせよ、VBからの呼び出しでスキーマ名を指定してください。

(ただし、既存パッケージのほとんどはパブリックシノニムがあり、スキーマ名を書かなくても実行できる)

begin sys.PK_AAAAAA.P_BBBBB; end;

----

>SCOTTユーザのロールにEXECUTE_CATALOG_ROLE権限、システム権限に、EXECUTE ANY といつくものを累加させるということで大丈夫でしょうか?

複数のロールやシステム権限やオブジェクト権限を累積させることは可能で、問題ありません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ