T-Sql选择并连接多行和多列到一个行和一列

4
基本上,我希望从存储过程中只返回一个结果行和一列。
例如,我的示例数据和表格如下:
ColoumA INT
ColoumB INT
ColoumC NVARCHAR(MAX)

ColoumA  ColoumB  ColoumC
   1       1      ErrorMessage1
   2       2      ErrorMessage2
   3       3      ErrorMessage3

成功执行存储过程后,如果处理成功,返回的结果是一个字符串值,其中包含上述所有细节。例如:

换句话说,我希望将所有的值存储在 TBL.rows[0][0] 中。

在C#.net中,当我调用代码时:

String ReturnValue = "";
Datatable tbl = new Datatable(AREA);
ReturnValue = tbl.Rows[0][0].ToString().Trim();
Console.Writeline("Sample Output");
Console.Writeline(ReturnValue);

我预期会有这样的结果:
Sample Output
ColoumA: 1, ColoumB 1, ErrorMessage1
ColoumB: 2, ColoumB 2, ErrorMessage2
ColoumC: 3, ColoumC 3, ErrorMessage3

我能否使用T-Sql语句来进行选择操作?如果可以,如何获取?

希望有人能够理解并回答我的问题。

谢谢。

PS:抱歉我的英语表述不太好。

1个回答

3

我在这里的强烈建议是:不要这样做。将其作为网格(常规SELECT)访问,并在应用程序层执行任何处理,即

var sb = new StringBuilder();
using(var reader = cmd.ExecuteReader()) {
  while(reader.Read()) {
    sb.Append("ColoumA: ").Append(reader.GetInt32(0))
      .Append(", Coloum B").Append(reader.GetInt32(1))
      .Append(", ").Append(reader.GetString(2)).AppendLine();
  }
}
string s  = sb.ToString();

不过,您可以通过TSQL来完成:

declare @result varchar(max) = ''
select @result = @result + 'ColoumA: ' + CONVERT(ColoumA, varchar(10)) +
          ', ColoumB ' + CONVERT(ColoumB, varchar(10)) + ', ' + ColoumC + '
' -- newline!
from ...

select @result

select @result = @result + ... 这种模式基本上就是您所描述的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接