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

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

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

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

SQL

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

Q&A

解決済

2回答

4148閲覧

SQLにおいて、引数指定に躓きました、、、

neigerin

総合スコア21

Oracle

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

SQL

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

0グッド

0クリップ

投稿2018/04/27 06:03

編集2018/04/27 06:11

SQL plusで日付の範囲を指定して入力すると出力されるプログラムを以下のように表示させたいと思っています。

SQL>Date.txt 2014/04/01        ←手打ち 2016/04/30        ←手打ち Aさん 2014/04/01 Bさん 2014/04/01 Cさん 2015/02/01 Dさん 2016/04/01

格納データは以下のような感じです。

Aさん 2014/04/01 Bさん 2014/04/01 Cさん 2015/02/01 Dさん 2016/04/01 Eさん 2016/10/01

ですが、引数指定がうまくいきません。
なお自分で組んだプログラムは現在以下のような状況です。

SELECT STF_ID,STF_NAME,STF_NAME_KANA,ENTER_DATE FROM HL_STF_MSTR WHERE ENTER_DATE SELECT ENTER_DATE('&1','yyyymmdd') FROM HL_STF_MSTR; SELECT ENTER_DATE('&2','yyyymmdd') FROM HL_STF_MSTR; ORDER BY "ENTER_DATE" ASC, "STF_NAME_KANA" DESC;

エラーコードは以下のとおりです。

次のコマンドの行1の開始中にエラーが発生しました: SELECT STF_ID,STF_NAME,STF_NAME_KANA,ENTER_DATE FROM HL_STF_MSTR WHERE ENTER_DATE SELECT ENTER_DATE('','yyyymmdd') FROM HL_STF_MSTR コマンドの行:4、列:1でのエラー エラー・レポート: SQLエラー: ORA-00920: 関係演算子が無効です。 00920. 00000 - "invalid relational operator" *Cause: *Action: 旧:SELECT ENTER_DATE('&2','yyyymmdd') FROM HL_STF_MSTR 新:SELECT ENTER_DATE('','yyyymmdd') FROM HL_STF_MSTR 次のコマンドの行5の開始中にエラーが発生しました: SELECT ENTER_DATE('','yyyymmdd') FROM HL_STF_MSTR コマンドの行:5、列:8でのエラー エラー・レポート: SQLエラー: ORA-00904: "ENTER_DATE": 無効な識別子です。 00904. 00000 - "%s: invalid identifier" *Cause: *Action: 次のコマンドの行6の開始中にエラーが発生しました: ORDER BY "ENTER_DATE" asc, "STF_NAME_KANA" desc エラー・レポート: 不明なコマンドです

大まかな情報は以下のとおりです。

社員マスタよりデータを抽出する。
抽出項目:
社員ID
社員名
ふりがな
入社日
条件:入社日の範囲は引数にて指定する。
ソート順:
部署コード(昇順)
役職コード(昇順)
入社日(昇順)

どなたか宜しくお願いします。

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

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

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

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

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

m.ts10806

2018/04/27 06:06

コードブロックは ``` です。シングルクォートではありません。<code>ボタンを利用するのが確実です。質問編集画面にプレビューが表示されるので見ながら調整してください。またSQLはどのデータベースをご利用でしょうか?バージョンも念のため、質問に追記してください。
m.ts10806

2018/04/27 06:08

あ、「SQL*Plus」ですね。なるべく表記は公式に近いものの方が望ましいです。それか「Oracle」タグが入ってると良いかなと(詳しくないですが、Oracleの標準ツールとのことなので)
guest

回答2

0

ベストアンサー

文法的なエラーです。
動作するSQLになっていませんし、そもそもSQLに対して理解が不足していると感じます。

ENTER_DATEは日付型だと想定して以下のようなSQLになるかと。

SQL

1SELECT STF_ID, STF_NAME, STF_NAME_KANA, ENTER_DATE 2FROM HL_STF_MSTR 3WHERE ENTER_DATE between to_date('&1','yyyymmdd') and to_date('&2','yyyymmdd') 4ORDER BY ENTER_DATE ASC, STF_NAME_KANA DESC 5;

投稿2018/04/27 06:18

編集2018/04/27 08:00
sazi

総合スコア25138

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

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

0

これで動くでしょうか。

SQL

1SELECT STF_ID,STF_NAME,STF_NAME_KANA,ENTER_DATE 2FROM HL_STF_MSTR 3WHERE ENTER_DATE BETWEEN '2014/04/01' AND '2016/04/03' 4ORDER BY "ENTER_DATE" ASC, "STF_NAME_KANA" DESC;

投稿2018/04/27 06:18

shigotonin

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問