私は ASP.NET と Oracle SQL の両方の初心者です。私は 1 つの長い SQL 文字列を ( を使用してUNION ALL
) 作成し、残りの処理を行うデータ ハンドラー クラスにその文字列を渡そうとしています。問題は確かに私の SQL 文字列に存在します。
これは私のコードの最初のセクションで、問題なく実行されます。
sql = "SELECT 'DCS - HCA (81)', HCA_SENT_DCS, HCA_VALID_DCS, HCA_SUSPEND_DCS, HCA_REJECTED_DCS,"
sql &= " SUM(HCA_VALID_DCS + HCA_SUSPEND_DCS + HCA_REJECTED_DCS) As ""Total Returned"","
sql &= " RESOLVED_CNT, SUM(HCA_REJECTED_DCS - RESOLVED_CNT) As ""To Do"""
sql &= " FROM HUB_CDI_CONTROL_NBRS WHERE REPORT_DATE = :0 "
_param.Add(dateSelected.ToString("dd-MMM-yyyy"))
sql &= " GROUP BY HCA_SENT_DCS, HCA_VALID_DCS, HCA_SUSPEND_DCS, HCA_REJECTED_DCS,"
sql &= " RESOLVED_CNT"
ただし、UNION
別のステートメントでこの SQLを実行しようとするSELECT
と、次の例外が発生します。
ORA-00933: SQL command not properly ended
完全なコードは次のとおりです。
sql = "SELECT 'DCS - HCA (81)', HCA_SENT_DCS, HCA_VALID_DCS, HCA_SUSPEND_DCS, HCA_REJECTED_DCS,"
sql &= " SUM(HCA_VALID_DCS + HCA_SUSPEND_DCS + HCA_REJECTED_DCS) As ""Total Returned"","
sql &= " RESOLVED_CNT, SUM(HCA_REJECTED_DCS - RESOLVED_CNT) As ""To Do"""
sql &= " FROM HUB_CDI_CONTROL_NBRS WHERE REPORT_DATE = :0 "
sql &= " GROUP BY HCA_SENT_DCS, HCA_VALID_DCS, HCA_SUSPEND_DCS, HCA_REJECTED_DCS,"
sql &= " RESOLVED_CNT"
sql &= " UNION ALL"
sql &= "SELECT 'SFDC - HCA (82)', HCA_SENT_SFDC, HCA_VALID_SFDC, HCA_SUSPEND_SFDC, HCA_REJECTED_SFDC,"
sql &= " SUM(HCA_VALID_SFDC + HCA_SUSPEND_SFDC + HCA_REJECTED_SFDC) As ""Total Returned"","
sql &= " RESOLVED_CNT, SUM(HCA_REJECTED_SFDC - RESOLVED_CNT) As ""To Do"""
sql &= " FROM HUB_CDI_CONTROL_NBRS WHERE REPORT_DATE = :0 "
sql &= " GROUP BY HCA_SENT_SFDC, HCA_VALID_SFDC, HCA_SUSPEND_SFDC, HCA_REJECTED_SFDC,"
sql &= " RESOLVED_CNT"
_param.Add(dateSelected.ToString("dd-MMM-yyyy"))
_DH.TheSQL = sql
_DT = _DH.GetTableWithParameters(_param.ToArray)
このコードの 2 つの部分に関心があります。
_param.Add() 関数を正しく呼び出していますか? を使用してパラメーターを 2 回参照して
:0
いるため、_param.Add() 関数は 1 回だけ使用する必要がありますか?GROUP BY
構文を間違って使用しているように感じます。を使用せずにクエリを実行しようとすると、Oracle に怒鳴られましたGROUP BY
が、それらを正しく使用しているかどうかはわかりません。基本的に、各列を追加しただけSELECTed
ですGROUP BY
そうでなければ、私が見逃している他のエラーがあると確信しています。助けてください!
ありがとうございました。