おかげでUSE変数...シンプルPL/SQL変数を作成 - 探しのためのWHERE句
を私はこれを研究して時間を費やしてきたし、私はそれが困難であるPL/SQLで何かをすることだと信じてすることはできませんTSQLで単純です。
私は2つのテーブルを結合単純なクエリを持っている:
Select DISTINCT
to_char(TO_DATE('1899123000', 'yymmddhh24')+ seg.NOM_DATE, 'mm/dd/yyyy') AS "Record Date"
, cd.CODE
, EMP.ID
, EMP.SHORT_NAME
FROM
EWFM.GEN_SEG seg join EWFM.SEG_CODE cd ON seg.SEG_CODE_SK = cd.SEG_CODE_SK
join EMP on seg.EMP_SK = EMP.EMP_SK
where NOM_DATE = vMyDate;
私はヒキガエル日付ポイントを使用して、私は、Oracle Exadataのソースに対してクエリを実行しています。結果のクエリは、QlikViewやTableauのような視覚化ツールにドロップされます。あなたがコードで見ることができるように、WHERE句を使うための簡単な変数を作りたいと思います。
この例では、NOM_DATEは、最初の行「Record Date」で確認できるように、42793(2/27/2017)などの整数です。何も新しいここでは、非常にエキサイティングな...まで...私はクエリをより動的にする変数を作成しようとしました。
ここで見つかった驚くほど多様な例を試しましたが、すべて失敗しました。以下のような:無効なSQL文
と
variable nomDate NUMBER;
EXEC nomDate := 42793;
select count(DET_SEG_SK) from DET_SEG
where NOM_DATE = :nomDate;
--ORA-00900:INTO句
declare myDate number(8); Begin myDate := 42793;
--Fail ORA-06550が
variable nomDate NUMBER
DEFINE nomDate = 42793
EXEC : nomDate := ' & nomDate'
...where NOM_DATE = (& nomDate) ;
--ORA-00900期待されています:無効なSQLステートメント
といくつかのより多くのこと..うまくいけば、あなたはアイデアを得る。私は正しい答えのためにstackoverflowを研究するのに数時間を費やしましたが、あなたが見ることができるように、私はあなたに尋ねています。 "Var"のような単純な宣言からより複雑な "DECLARE、BEGIN、SELECT INTO ...."に実際に関数を作成するには、カーソルを使用して出力を反復する...私はまだ単純な変数をWhere句。
私の方法の誤りを説明してください。
--Forlorn SQL Devの
を取得するには、まず、私はあなたがPL/SQL、TSQLないことを意味想定しています。第二に、私は最初の例を試しましたが、問題は見られません。わたしにはできる。だから私はそれが非常にシンプルな、または非常に奇妙な何かでなければならないと思う!全体(最初)の例をカット/ペーストできますか? – BobC
PL/SQL(名前付きのパッケージ/プロシージャ/関数など)の内部では、 'declare'セクションに変数を宣言して、好きな場所で参照できます。あなたの例は、 '宣言mydate番号(8);'はうまく動作します( 'end;'が必要です)、 'select'ステートメントにのみ適用されるので' INTO節が期待されている 'ことがわかりません。 'variable'構文と' define'構文は、実際にはデスクトップアプリケーションによってさまざまな方法でエミュレートされるSQL * Plusコマンドラインツールのものですから、実行方法を説明する必要があるかもしれません。 –
私の推測では、問題は変数宣言ではなく、レポート出力です - http://stackoverflow.com/questions/351489/is-it-possible-to-output-a-select-state-from-aのようなものです-pl-sql-block/351752 –