Oracle 9iを使ってsqlファイルを実行させたところ、タイトルにあるように、
PL/SQL: SQL Statement ignored
というエラーメッセージが出力されました。
いろいろ検索してみると、これは、私にシステム権限がないことからおこるとあったのですが、
その設定変更の仕方がいまいちよくわかりませんでした。設定変更のしかたを教えていただけないでしょうか。
また、設定変更したことによって変わるのは私自身のシステム権限だけであって、他にコンピュータ(UNIX)を共有している人たちには影響はありませんよね?
立て続けに質問ばかりすみませんが、よろしくおねがいします。
No.1ベストアンサー
- 回答日時:
PL/SQLで権限がないということは、EXECUTE PROCEDUREシステム権限がないということでしょうか・・・。
前後のエラーも記載していただいた方が良いとは思いますが。
システム権限の付与方法は下記で行うことが可能です。
※ここでいう"ユーザ"はOracleユーザのことでスキーマとイコールです。
1.SYSTEMまたはSYS(DBA権限を持ったユーザ)でログイン
2.grant execute procedure to [対象ユーザ];
または
grant resource to [対象ユーザ];
以上で一応権限付与はできますが、どのような処理を行いたいかによって、これだけで解決するかどうかわかりません。
また、他の人への影響ですが、ユーザをどのように使用しているか、どのようなポリシーのシステムかによって異なります。(「私自身」というのが、セッションのことかスキーマのことかわかりませんでした。)
同じユーザを他の人と共通で使っていれば、もちろん他の人へ影響が出ますし、一人1ユーザ(スキーマ)で割当てられていれば、影響なく使えます。
「影響が出る」という意味は、セキュリティレベルが権限付与された分落ちるということで、機能的に使用できなくなることはありません。
なお、セッション単位で権限を割当てる方法はないと思っています。
付与した権限をセッション終了次第revokeすれば、元に戻るのではないでしょうか。
この回答への補足
念のためというか、前後のエラーも同時に表示しておきます。
2/2 PL/SQL: SQL Statement ignored
2/14 PL/SQL: ORA-04044: procedure, function, package, or type is not
allowed here
これの場合だと、システム権限の問題とかではなかったりするのでしょうか。
ちなみに、エラーが出ているのが、triggerの部分です。
No.5
- 回答日時:
最初にお聞きしましたので、稼動実績のあるSQLと思っていましたが・・・。
「正常に動いたことは一度もない」ということですね?
Oracleでは稀に、許容できないはずの構造を作成順序によってはうまく作れてしまい、その結果誤ったエラー番号を表示してしまうことがあります。
記載していただいたORA-04044は「本文(BEGIN以下)2行目の14バイト目にプロシージャなどのオブジェクトを記載することはできない」という意味です。
一度、ViewingPendingにテストデータ(4列分)を入力してみてできるかどうか試していただけませんでしょうか?
(記載していただいたCreate文が正確であれば、できないと思いますよ。)
例)
insert into viewingpending values(1,1,sysdate,'TEST');
No.4
- 回答日時:
一つのスキーマ内で同様(テスト用)のSQLを実行したところ、こちらでは問題なく動きました。
最初に戻りますが、なぜ「システム権限がないことに起因する」という結論に至ったのでしょうか。(ORA-04044からではその結論は出ないと思いますが・・・)
また、下記のViewingPendingテーブルのCreate文がすべてであるとすると、そもそもviewDateやviewCommentを格納するカラムがありませんね。
長くなるようでしたら、関連するカラムだけでも結構ですので、ViewingテーブルとViewingPendingテーブルのCreate文を再度記載していただくことは可能ですか?
この回答への補足
一度補足を投稿したつもりだったのですが、されていなかったみたいです。遅くなってすみません。
システム権限の有無が原因だと言う結論に至った理由は・・・実はよくわからないのです。あちこち調べまくって自分で出してしまった結果だったので、間違っていたのでしょうね・・・。
以下がViewingとViewingPendingテーブルです。
create table Viewing(
clientNo number(3),
propertyNo varchar2(4),
viewDate date,
viewComment varchar2(20),
primary key(clientNo, propertyNo),
foreign key(clientNo) references Client,
foreign key(PropertyNo) references PropertyForRent
);
create table ViewingPending(
clientNo number(3) not null,
propertyNo varchar2(4) not null,
primary key (clientNo, propertyNo),
foreign key (clientNo) references Viewing,
foreign key (propertyNo) references Viewing
);
No.3
- 回答日時:
ViewingPendingオブジェクトはテーブルでしょうか?
下記を実行してみてください。
select object_type from user_objects where object_name = 'VIEWINGPENDING';
オブジェクトタイプがTABLEやVIEWなど値格納可能なオブジェクトでなければ同様のエラーが出ます。
ちなみに下記ソースの下から2行目の最後の部分は途切れただけですよね?
この回答への補足
あ。そうです。ソースが途切れていました。
正しくは、
BEGIN
insert into ViewingPending value(:old.clientNo, :old.propertyNo,:old.viewDate, :old.viewComment);
END;
でした。
ちなみに、ViewingPendingを実行してみたところ no rows selected と表示されました。
ちなみに、ViewingPendingは、テーブルで、下記のように指定してあります。
create table ViewingPending(
clientNo varchar2(5) not null,
propertyNo varchar2(4) not null,
primary key (clientNo, propertyNo),
foreign key (clientNo) references Viewing,
foreign key (propertyNo) references Viewing
);
No.2
- 回答日時:
ORA-4044は基本的に構文エラーになります。
既に動かしている実績のあるSQLファイルでしょうか?
もう少し詳細に記載していただいた方が、糸口を見つけやすいと思います。
システム権限としては、RESOURCEロールを与えておけばTRIGGERを含むPL/SQLの作成・実行は可能になります。
権限の問題でどうしても引っかかるようであれば、一旦DBAロールを与えてみて、「権限の問題かどうか」という切り分けを行ってみてはいかがでしょうか。(本番環境では難しいかもしれませんが。)
この回答への補足
はい。すでに何度か動かしています。が、エラーがでているので、きちんとした結果が出ないでいます。
詳細に・・・ということでしたので、trigger関係の部分を下に示させていただきます。
<Define2Triggers.sql>
/**** NewPendingTrigger ****/
create or replace trigger NewPendingTrigger
after insert on Viewing
for each row
BEGIN
insert into ViewingPending values(:new.clientNo, :new.propertyNo);
END;
/**** RemovePendingTrigger ****/
create or replace trigger RemovePendingTrigger
after update of ViewComment on Viewing
for each row
BEGIN
insert into ViewingPending values(:old.clientNo, :old.propertyNo, :old.$
END;
NewPendingTriggerは、Viewingテーブルに入力があったときに、その入力をNewPendingTriggerにも入れる。
RemovePendingTriggerは、ViewingテーブルのviewCommentフィールドがアップデートされたときに、消されたデータをRemovePendingTriggerに入力するという処理を行います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- InternetExplorer(IE) 既定のブラウザーを変更した場合、付随して処理が必要なことはありますか? 2 2022/03/25 16:04
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- PowerPoint(パワーポイント) PowerPointの箇条書きの既定のリストを変更する方法について 1 2022/12/15 18:41
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- ノートパソコン Chromebookの文字フォント(デバイスの入力文字など)が直せないです 1 2022/06/21 14:56
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/09 14:54
- その他(SNS・コミュニケーションサービス) 【至急お願いいたします】facebookのユーザーネーム変更について 1 2023/05/10 10:09
- Windows 10 Windows 10 ノートのディスプレイが暗いです 6 2023/07/16 12:59
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
PL/SQLのコンパイルエラーについて(ignored)
Oracle
-
PL/SQL PLS-00103エラーについて
Oracle
-
CASE文のエラーについて
Oracle
-
-
4
PL/SQLでPLS-00201のエラー
Oracle
-
5
カーソル0件の時にエラーを発生させる
Oracle
-
6
単一グループのグループ関数ではありません。
Oracle
-
7
オラクル(PL/SQL)のエラー
その他(データベース)
-
8
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
9
PL/SQLでログを確認したい。
Oracle
-
10
PL/SQLカーソルの2重FORループができません
Oracle
-
11
ORA-00959: 表領域'****'は存在しません
Oracle
-
12
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
13
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
14
PLSQLの識別子エラー
Oracle
-
15
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
16
TO_CHARで小数点以下がある場合と無い場合を切り分ける方法
その他(プログラミング・Web制作)
-
17
PCC-S-02201エラーの対処を教えてください!
Oracle
-
18
正しいSQLなのに「ORA-00936: 式がありません。」となる
Oracle
-
19
ストアドファンクションの実行
Oracle
-
20
ORA-01858: 数値を指定する箇所に数値以外の文字が指定されています
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ODBCリンクの際にACCESSでは読...
-
Statement ignored というエラー
-
権限で「委任」「専決」とあり...
-
Flashback Tableで必要な権限
-
会社の〇〇部と〇〇課の違いっ...
-
スプレッドシートを使った複数...
-
Access VBAで行ラベルが定義さ...
-
SQLサーバで和暦から西暦に変換...
-
bcp in でエラー
-
Accessのマクロでモジュールを...
-
PL/SQLカーソルの2重FORループ...
-
キャッシュを使わずにSELECTを...
-
PL/SQLでSPOOLさせたいのですが...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
likeとsubstrの使いわけについて
-
【Excel VBA】 WorksheetやRa...
-
今日の日付が入った行のデータ...
-
指定した年月までのデータを取...
-
sqlplusでヘッダーが付かない
-
エクセルVBAでUserFormを起動し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
会社の〇〇部と〇〇課の違いっ...
-
Oracle 10g 他スキーマの参照権...
-
別のスキーマのテーブルアップ...
-
権限で「委任」「専決」とあり...
-
異なるスキーマのビューを元に...
-
Oracle 10gで順序sequenceの作...
-
Poweruser権限でのIPアドレス変...
-
テーブル権限確認
-
トリガーにてビューを作成しよ...
-
oracleユーザーの権限確認方法...
-
「バッチジョブとしてログオン...
-
ストアドプロシジャで、TRUNCAT...
-
ノートンの活動ログに詳しい方...
-
Oracleでオブジェクト権限を調...
-
DBMS_LOCK.SLEEPについて
-
参照権限の付与方法
-
ポリスとシェリフの違い 及び...
-
「セットアップはシステム管理...
おすすめ情報