2

SQL Temporary Tablesのチュートリアルに基づいて、使用して一時テーブルを作成しても問題ないはずですが、それを言おうとするとSELECT * INTO #tempTable FROM tableAスローされます。で一時テーブルを使用する適切な方法を教えてください。SQLExceptionSELECT * FROM #tempTableInvalid object name '#tempTable'C#

string sql = "SELECT * INTO ##tempTable FROM (SELECT * FROM tableA)";
using (var command = new SqlCommand(sql, connection))
{
    string sqlNew = "SELECT * FROM ##tempTable";
    using (var command2 = new SqlCommand(sqlNew, connection))
    {
        using (var reader = command2.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine(reader["column1"].ToString());

            }
            Console.ReadLine();
        }
    }
}

私の目的は、取得したデータを使用してtempTableにsqlVar挿入し、それに何らかの操作を実行することです。コードを上記のコードにどのように適合させるかについてのサンプルコードがあれば、非常に感謝しています。ありがとうございました。

4

5 に答える 5

0

一時テーブルを から#tempTableに変更します##tempTable

使用##するということは、存在するグローバル一時テーブルを意味します。タスクが完了したら、ドロップする必要があります。

If Exists(Select * from tempdb..sysobjects Where id = object_id('tempdb.dbo.#tempTable'))

DROP TABLE #tempTable 
于 2013-09-12T07:57:13.537 に答える
0

あなたの答えはコメントにあると思います:

それらを作成するセッション中に使用可能な一時テーブル。

実際にデータを取得したい場合は、同じスコープ内でこの一時テーブルから SELECT ステートメントを実行する必要があります。

もう一つ:

を実行しているように見えません。次のvar command行がありません。

string sql = "SELECT * INTO ##tempTable FROM (SELECT * FROM tableA)";
using (var command = new SqlCommand(sql, connection))
{
    command.ExecuteNonQuery();// This line is missing..
    string sqlNew = "SELECT * FROM ##tempTable";
    using (var command2 = new SqlCommand(sqlNew, connection))
    {
        using (var reader = command2.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine(reader["column1"].ToString());

            }
            Console.ReadLine();
        }
    }
}

しかし、行がないことは、実装が間違っている理由ではありません..

于 2013-09-12T08:27:53.777 に答える