質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

2回答

11080閲覧

sqldeveloperでのplsqlの使い方について

退会済みユーザー

退会済みユーザー

総合スコア0

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/11/20 08:19

編集2022/01/12 10:55

sqldeveloperで新規プロシージャを作成して以下のようなプログラムを実行しようとしてもコンパイルエラーとなります。
このようなplsqlをsqldeveloperで実行するにはどうすればいいでしょうか?

sql

1declare 2 3 dname varchar2(10); 4 5begin 6 7 for dept_rec in (select dept_id,dept_name from dept) loop 8 dname := dept_rec.dept_name; 9 dbms_output.put_line(dname); 10 end loop; 11 12exception 13 14 when others then 15 dbms_output.put_line('エラー発生!!'); 16 17end;

コンパイルエラーは「Error: ORA-00922: オプション指定されていないか、または無効です。」が出力されます(declareの部分です)。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahikoHirata

2016/11/20 09:27

コンパイルエラーも同時に開示されてください。
guest

回答2

0

実際に実行しているSQLをそのまま提示したほうが良いと思われます。
あくまで想像ですが、以下のように1行目が「create or replace」になってはいませんか?

sql

1create or replace 2declare 3 4 dname varchar2(10); 5 6begin 7 8 for dept_rec in (select dept_id,dept_name from dept) loop 9 dname := dept_rec.dept_name; 10 dbms_output.put_line(dname); 11 end loop; 12 13exception 14 15 when others then 16 dbms_output.put_line('エラー発生!!'); 17 18end;

次のコマンドの開始中にエラーが発生しました : 行 1 -
create or replace
declare

dname varchar2(10)
エラー・レポート -
SQLエラー: ORA-00922: オプション指定されていないか、または無効です。
00922. 00000 - "missing or invalid option"
*Cause:
*Action:

ただし「declareの部分」でエラーとなっているわけではないので、違うかもしれませんね。

ちなみにプロシージャを作成するならば、以下のとおりです。
※一部、scott.dept表の定義に合わせて、dept_id → deptno、dept_name → dname としています。

sql

1create or replace procedure test_proc 2as 3 dname varchar2(10); 4begin 5 for dept_rec in (select deptno,dname from dept) loop 6 dname := dept_rec.dname; 7 dbms_output.put_line(dname); 8 end loop; 9exception 10 when others then 11 dbms_output.put_line('エラー発生!!'); 12end;

投稿2016/11/20 13:06

q1701

総合スコア274

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

sqldeveloper は昔試して使い勝手が悪かったのでそれ以来使っていません。
SQL*Plus では dbms_output パッケージを使う時、
SET SERVEROUTPUT ON
がないと結果が表示されないので、同じような設定が必要なのかもしれません。

また、SQL*Plusでは
END;
と次にスラッシュ
/
が必要です。

なお、投稿されたコードをSQL*Plusで実行したら正常に動きますか?

投稿2016/11/21 04:37

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問