2016-05-25 15 views
0

スクリプトに1つのパラメータを1年間入れたいです。SQL Developer、代入変数、動的作成、式に基づいて

define YYYY = 2014; 

その後、私はそれが1年前

だが、私はこれまでのところ、これは不可能であると思わやった読書から、すなわちこの1

YYYY2 = &&YYYY - 1; 

に基づいて第二のパラメータをしたいです。あなたが割り当てたので、文字通り、たまたま

ORA-00933: SQL command not properly ended 
00933. 00000 - "SQL command not properly ended" 
*Cause: 
*Action: 
Error at Line: x Column: y 
+2

を追加します。 3行目以降 – SSD

答えて

1

2014 - 1YYYY2に:

はここにある私の試みのコードの最後の行のための

define YYYY = 2014; 
define YYYY2 = &&YYYY - 1; 

select &&YYYY, &&YYYY2 from DUAL 

select * from cb_enrolment2_&&YYYY; 
select * from cb_enrolment2_&&YYYY2 ; 

応答です。だから、

select &&YYYY, &&YYYY2 from DUAL 

有効なクエリですが、

select * from cb_enrolment2_&&YYYY2 

select * from cb_enrolment2_2014 - 1 
に変身
select 2014, 2014 - 1 from DUAL 

に変身

これはエラーを表示します。

代替変数で直接数学を行うことはできませんが、columnコマンドでnew_value引数を使用して、データベースからデータを選択することができます。 columnselectを実行しながら

define YYYY = 2014; 
column dual_x new_value YYYY2; 
select &&YYYY - 1 dual_x from dual; 

YYYY2が暗黙的に作成されるため、defineそれへの必要はありません:だから、何もdualから算術式を選択からあなたを停止しません。

のsqldeveloperは、そのワークシートには、SQL * Plusの方言を使って、リファレンスと置換変数の詳細については、これを参照してください。https://blogs.oracle.com/opal/entry/sqlplus_101_substitution_varia#2_5

+0

ありがとうございました。私はこれがソリューションに非常に近いかもしれないと思うが、YYYY2変数を使用しようとすると「置換変数を入力する」ボックスが表示され続ける。それは私がやることを避けようとしているものです。 –

+0

@ClancyBirrellそれは変です。上記の3行を貼り付けた後、 'select && YYYY2 from TABLENAME_ &&YYYY; 'のようなクエリを実行することができます。エラーが発生した行を投稿するか、完全なスクリプトを含めるように質問を修正してください。 – Timekiller

+0

私に戻ってくれてありがとう。それは誤りではない。これは、置換変数値の手動入力を要求するSQL DEVELOPERポップアップ・ウィンドウです。だから私は実際にポップアップのようにここでエラーをカットアンドペーストすることはできません。 = 'C –

関連する問題