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

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回答

6639閲覧

sql*plusでselect文で取得した値を変数に代入したいです。

12345

総合スコア15

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クリップ

投稿2019/02/04 14:14

Oracle sql*plusについて
select文で取得した値を変数に代入したく思っております。

テーブルが2つ存在し、特定のデータが一致した際のレコード行数のみを取得したいです。下記の場合は変
数の代入が可能でしょうか。
ネットを調べても同じようなケースがなく、困っております。

テーブル名:sample1
カラム:ID,Name,Code

テーブル名:sample2
カラム:ID,Company

下記にSQLのソースを記載します。

set feedback off
set heading off
set underline off
set serveroutput on

var test number;

declare
test number(3);
begin
select count(*) from sample2 where ID = ( sample1.ID from sample1 and sample1.ID = sample1.Code) into :test: from sample2;
end;
/

上記のように、sample1とsample2の
IDのデータが一致かつ、sample1のIDとCodeが一致してる場合のsample2のレコード行数を取得し、変数testに代入したいと考えております。
上記のSQLを試しましたがエラーになります。

また、select~end;間を
select count(*) into :test: from sample2
の場合(データ一致にかかわらず全てのレコード行数を表示)は問題なく代入できます。
ただ、今回は特定のデータが一致した場合の行数を変数に代入したいと思っております

修正及び、他に変数に代入ができる方法がありましたらご教授頂けると助かります。
よろしくお願い致します。

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

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

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

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

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

Orlofsky

2019/02/04 18:51

[PL/SQL]タグを追加してください。
Orlofsky

2019/02/04 18:53

テーブル定義は CREATE TABLE に修正してください。
guest

回答2

0

SQL

1set serveroutput on 2declare 3 test number(3); 4begin 5 select count(*) into test 6 from sample1 s1 7 inner join sample2 s2 8 on s1.id = s2.id 9 where s1.id = s1.code; 10 dbms_output.put_line('count:' || to_char(test)); 11end; 12/

PL/SQLを使ってみよう! 辺りを最初から読むと良いでしょう。

投稿2019/02/04 19:03

Orlofsky

総合スコア16415

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

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

12345

2019/02/05 03:11

ご回答ありがとうございます。 ご教授頂きましたSQLで確認が取れました。 また、質問時のご指摘等も兼ねてお詫び申しあげます。 次回以降活用させて頂きます。
guest

0

ベストアンサー

変数に入れる方法の前に、テーブル結合のSQLを確認したほうが良いような。

手元にOracleがないので未確認ですが、こんな感じじゃないですか?

SQL

1 select count(*) into :test: 2 from sample2 s2 3 join sample1 s1 on s2.id = s1.id 4 where s1.id = s1.code;

投稿2019/02/04 14:27

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

12345

2019/02/05 03:11

ご回答ありがとうございます。 頂きましたSQLで変数に代入できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問