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

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

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

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

Q&A

解決済

5回答

7371閲覧

ORACLEでwhere句に変数を使用したい

koba58840527

総合スコア9

Oracle

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

0グッド

0クリップ

投稿2018/09/06 03:49

MYSQLで言う以下の動作をORACLEで行いたいのですが、可能でしょうか?

mysql

1set @divCode = 055; 2select * from hoge_table where code = @divCode;

要は、変数をwhere句で使いたいです。
ググってもよくわからなかったので質問させていただきました。
よろしくお願いします。

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

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

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

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

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

guest

回答5

0

バインド変数で検索すると幸せになれるかもです。
Where句でもバインド変数は利用できますよ。

投稿2018/09/06 08:17

n_takapyon

総合スコア443

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

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

0

SQL単独で変数を使用したいという場合なら、CTEを利用して同様な事は可能です。

SQL

1with para as ( 2 select '055' as divCode from dual 3) 4select * from hoge_table, para where code = divCode

投稿2018/09/06 04:06

sazi

総合スコア25138

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

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

koba58840527

2018/09/06 08:07 編集

回答ありがとうございます。 単独ではなく、複数のクエリに対してひとつの変数を使いたいので少し用途が違うようです。 ただ、この方法知りませんでした、参考にさせていただきます。 複数のクエリに対してひとつの変数を使うことはORACLEの場合難しいでしょうか?
sazi

2018/09/06 08:41

ストアドなら可能です。 単にスクリプトを流せば良いというなら、無名ブロックのPL/SQLにすれば良いです。
sazi

2018/09/06 08:47

複数のSQLが同一トランザクション内なら、変数をカラムにした一時表を作成して使用すれば、CTEと結果は同じです。
guest

0

自己解決

defineが一番近かったので以下のように行うことにしました。

oracle

1define divCode = 055; 2select * from hoge_table where code = &divCode;

回答していただいた方、ありがとうございました。参考にします。

投稿2018/09/11 03:27

編集2018/09/11 03:29
koba58840527

総合スコア9

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

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

sazi

2018/09/11 04:46 編集

defineはSQL*Plusでしか使用できませんけど、いいんですか? 色んなDBツールで使用できることを考えるなら、無名ブロックのスクリプトが良いかと。
koba58840527

2018/09/15 05:40

コメントありがとうございます! SQL Developerでの実行なのでとりあえず大丈夫なのですが、 本当はIntellij で実行したいのでブロックスクリプトでの実行も検討します。 と言うかブロックスクリプトの処理がよくわからないので少し勉強しますmm
guest

0

Oracle SQL Developerで実行する場合はこんな感じ?

var x number; exec :x := 10; select :x from dual; exec select count(*) into :x from dual; exec print x;

VARIABLE バインド変数を宣言するSQL*Plusコマンド

投稿2018/09/06 04:05

euledge

総合スコア2404

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

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

koba58840527

2018/09/06 08:04

これって指定した変数にselect文の結果を入れているように見えるのですが、 varの内容をwhere句に指定もできるのでしょうか? 試してみた限りではできず。。
guest

0

可能ですよ。

「ORACLE SQL 変数」
とかでググるだけでもたくさん出てきましたが、何がわからないのでしょうか?

投稿2018/09/06 03:58

macaron_xxx

総合スコア3191

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

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

koba58840527

2018/09/06 08:06

「ORACLE SQL 変数」でググると、 select文の結果を変数に入れる方法がたくさん出て来るような気がしています。 僕が知りたいのはwhere句に変数を使いたい、です。 調べ方が悪いだけかもしれません。。 お手数ですが、where句に変数を使っているサイトがわかればご教授願えないでしょうか。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問