2016-09-15 10 views
0

私はthisソリューションを試しましたが、1つずつ照会したい場合は機能しませんでした。SQL Serverクエリ結果を変数(グローバル)に設定して再利用する方法はありますか?

コード:

Declare @ID int; 

SET @ID = SELECT TOP(1) ID FROM Students 

// After that query is ran I will run this query 
SELECT * 
FROM Courses AS C 
WHERE C.studentID = @ID 

// These above queries aren't great way to query it, 
// but I am just trying to illustrate what I am trying to achieve 

それが正常に動作し、これらの2つのクエリが一緒に走っている場合は、一時的に

@ID

にそのクエリの結果を格納し、Iドンやりたくない。

変数に値を保持する方法はありますか?最初のクエリを実行し、変数にIDを格納する場合と同様に、2番目のクエリを実行します。

ストアドプロシージャで実行できることはわかっていますが、クエリウィンドウで実行できるかどうかを知りたかったのです。

+0

あなたは何を保存しようとしていますか? 2番目のアプローチは儀式を働かせますか? \t select TOP(1)@ ID =あなたのテーブルからID –

+0

私の質問が更新されました。混乱をおかけして申し訳ありません。 –

答えて

0

MSSQLサーバーは、グローバル変数の概念がありません。この方法を使用することができますありがとうクエリ。

上記のような変数に格納すると、クエリが完了するまで続きます。

実行しているクエリに関係なく、現在のクエリウィンドウで利用できるようにするには、複数の方法があります。

1)一時テーブル(#tablenameにそれを選択し)、それは現在の問合せウィンドウ

2)グローバルな一時テーブル(##テーブル名にそれを選択に利用可能である)、それは現在のセッションに利用可能です

3)現在のセッションで利用できるようにして、コンテキスト情報に格納してから取り戻す方法。 #tableはより適切な選択肢です。

+0

ありがとうございます、これはグローバル変数の概念があるかどうかを知りたかったのです。 –

0

あなたが第二実行し、あなたが 実行最初のないクエリとは、変数にIDを保存することができますので

Declare @ID int; 
select TOP(1) @ID = ID from Students 
--select @id 
Select * from Courses as C where C.studentID = @ID 
+0

私はできますが、私はそれを一緒に実行したくありませんでした。 D –

0

SQL Server変数は、単一バッチで動作するようになっています。したがって、変数を持つ完全なコードを一度に実行する必要があります。

+0

ありがとうございます。 –

関連する問題