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

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

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

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

SQL

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

Q&A

解決済

2回答

10446閲覧

PL/SQLでのwithがエラー

R7038XX

総合スコア44

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

SQL

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

0グッド

0クリップ

投稿2017/05/18 08:16

編集2017/05/19 02:21

###前提・実現したいこと
PL/SQL内のSQLでwithを使用したい

###発生している問題・エラーメッセージ

PL/SQL: SQL Statement ignored

###対象のSQL

SQL

1CREATE OR REPLACE PROCEDURE 2IS 3 : 4BEGIN 5 with 6 w as 7 ( 8 select a,b,c from d 9 ), 10 x as 11 ( 12 select a,b from w 13 ) 14 select * 15 bulk collect 16 into mWork 17 from x 18 ; 19 forall i in 1..mWork.count 20 insert into y 21 values mWork(i) 22 ; 23END 24/

###試したこと
・SQL*Plusでwithを含むSQLの実行に問題ないことは確認済み

###補足情報(言語/FW/ツール等のバージョンなど)
・Oracle 11g Enterprise

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

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

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

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

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

Orlofsky

2017/05/18 08:27

差支えない限り、PL/SQLで記述した部分も提示してください。
guest

回答2

0

ベストアンサー

最初の回答にカーソルの中にWITH句を記述する方法を書いてあります。

投稿2017/05/19 07:10

Orlofsky

総合スコア16415

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

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

R7038XX

2017/07/31 06:25

WITH句を使用する場合は、カーソルとして記述する必要があるのですね
guest

0

SQL, PL/SQL はコード </> で囲みましょう。
質問の際は動作確認に必要なCREATE TABLE D なども提示された方が良いです。
質問の内容が中途半端なので適切なコメントはできませんが、何が何でもWITH句を使うのが目的でしょうか?

WITH句が使えなければインラインビューを使う方法もあるのでは?

単にPL/SQLの中でWITHの記述方法がわからないだけなら以下のコードを参考に。

PL/SQL

1SQL> CREATE OR REPLACE FUNCTION FUNC1 2 2 RETURN NUMBER 3 3 IS 4 4 CURSOR CUR_MON IS 5 5 WITH MONTH_LIST AS 6 6 ( 7 7 SELECT 5 AS MONTH FROM DUAL 8 8 ) 9 9 SELECT ML.MONTH 10 10 FROM MONTH_LIST ML 11 11 ORDER BY ML.MONTH ; 12 12 L_MONTH NUMBER(2) ; 13 13 BEGIN 14 14 OPEN CUR_MON ; 15 15 FETCH CUR_MON INTO L_MONTH ; 16 16 CLOSE CUR_MON ; 17 17 RETURN(L_MONTH) ; 18 18 END FUNC1 ; 19 19 / 20 21ファンクションが作成されました。 22 23SQL> SELECT FUNC1 FROM DUAL ; 24 25 FUNC1 26------------- 27 5 28 29SQL>

投稿2017/05/18 08:26

編集2017/05/19 00:31
Orlofsky

総合スコア16415

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問