2

結局のところ、これは私が以前に行う必要がなかったことであり、何らかの理由で同様の質問を見つけることができません。をC#NVARCHAR @columnHeadersのaに戻したいです。String必要な文字列を作成するSQLクエリはこれです

DECLARE @columnHeaders NVARCHAR(MAX); 
SELECT @columnHeaders = 
    COALESCE (@columnHeaders + ',[' + Field + ']', '[' + Field + ']') 
FROM SomeTable;

@columnHeadersただし、変数をC#に戻すにはどうすればよいですか?注:関数などを使用することはできますが、どうしても必要な場合を除いて、ストアドプロシージャ、ビュー、または関数は使用したくありません...

DataTableを使用してcolumnnヘッダーを選択できます

DECLARE @columnHeaders NVARCHAR(MAX); 
SELECT COALESCE (@columnHeaders + ',[' + Field + ']', '[' + Field + ']') 
FROM SomeTable;

C#で操作しますが、SQLから直接文字列を返すと便利です。

御時間ありがとうございます。

4

3 に答える 3

3

ストアドプロシージャを使用したくない場合は、おそらくこれでうまくいくでしょう。

DECLARE @columnHeaders NVARCHAR(MAX);  
    SELECT @columnHeaders =  
    COALESCE (@columnHeaders + ',[' + Field + ']', '[' + Field + ']')  
    FROM SomeTable; 
    select @columnHeaders

結果を取得するために使用ExecuteScalar()します。

ただし、SQL ServerにSQLを保持するという点で、ストアドプロシージャははるかに優れていると個人的にはお勧めします。

于 2012-09-04T12:44:11.370 に答える
2

2番目のステートメントはセットリターンではないと思います。これは割り当てプロセスになります。

DECLARE @columnHeaders NVARCHAR(MAX); 
SELECT @columnHeaders = 
    COALESCE (@columnHeaders + ',[' + Field + ']', '[' + Field + ']') 
FROM SomeTable;

これを行う必要があります。最後の行に@columnHeadersの選択を追加するだけです。

DECLARE @columnHeaders NVARCHAR(MAX); 
SELECT @columnHeaders = 
    COALESCE (@columnHeaders + ',[' + Field + ']', '[' + Field + ']') 
FROM SomeTable;
select @columnHeaders as ch;

次に、C#で:

da.Fill(dt);
Console.WriteLine(dt.Rows[0]["ch"]);
于 2012-09-04T12:50:33.080 に答える
1

クエリでデータを返すだけの場合は、データを実行可能ファイルに格納する必要はありません。

これを試して:

SELECT CAST(COALESCE (@columnHeaders + ',[' + Field + ']', '[' + Field + ']')  AS NVARCHAR(MAX))
FROM SomeTable;
于 2012-09-04T12:45:52.027 に答える