2016-09-26 81 views
1

teradataのsql方言のこのSql Server(TSQL)コードに似た変数を宣言することに相当するのはありますか?teradataの変数の宣言

DECLARE @Somedate Date = GETUTCDATE(); 

SELECT TOP 10 * FROM SOMETABLE WHERE SOMEDATE = @Somedate; 
+0

どのようにクエリを実行していますか? SQLアシスタント、BTEQ? – Andrew

+0

Teradataでストアドプロシージャ(またはマクロ)の外に変数を使用することはできません。 – dnoeth

+0

これは、OPが変数によって何を意味しているのか、実際には何をしようとしているのかによって異なります。あなたは使うことができますか? SQLアシスタントでは、BTEQのためにシェルスクリプトを使用して変数をプラグインすることができます。 – Andrew

答えて

1

はいといいえ:これは、Teradataの上のストアドプロシージャにいくつかの変数として格納されている日付でこれを達成するための一つの方法があるのTeradata SQLアシスタント/ BTEQツール

SELECT TOP 10 * FROM SOMETABLE WHERE SOMEDATE = Current_Date; 
SELECT TOP 10 * FROM SOMETABLE WHERE SOMEDATE = (SELECT MAX(SameDate) FROM SomeOtherTable); 

で動作します。コードエディタから直接実行している典型的なSQL文では、変数を宣言することはできません。ストアドプロシージャの内部で変数を宣言できます(例として)。コードエディタウィンドウでは、揮発性テーブルを作成し、それを使用して "変数"の値を格納する可能性が高くなります。

0

Teradataでは次の構文を使用できますか? Current_Dateの部分は、スカラークエリで置き換えることができます。

DECLARE v_SQL_Text VARCHAR(32000); 
DECLARE v_Somedate Date; 

SELECT Current_Date INTO :v_Somedate; 

SET v_SQL_Text = 'SELECT TOP 10 * FROM SOMETABLE WHERE SOMEDATE = ' || v_Somedate || ';' 

CALL DBC.SysExecSQL(v_SQL_Text); 
+0

これはうまくいきません。 – cs0815

+0

どのように動作しないのか説明していただけますか?クエリにはどのようなツールを使用していますか? – xenodevil

+0

SQLアシスタント - おそらく権利の問題 – cs0815