如何获取显示在SQL Server的“结果”和“消息”选项卡中的字符串值?

时间:2018-12-13 08:18:57

标签: sql-server

我似乎无法在google中找到正确的答案,或者可能无法使用正确的关键字。

如何获取显示在其中的字符串值

  1. 结果标签
  2. “消息”标签

enter image description here

在SQL Server中。

感谢您的帮助

编辑: 我想获取字符串值并将其存储在存储过程中的变量中。

编辑
我想捕获输出消息并将其存储在变量中。这将通过存储过程来处理。因此,我需要一种SQL语法来从结果选项卡和消息选项卡获取字符串。

3 个答案:

答案 0 :(得分:0)

从哪里得到它们?假设您正在编写C#应用程序,并使用ADO.NET连接到数据库。

在这种情况下,您可以使用连接的InfoMessage事件处理程序来获取在消息中看到的内容。编写这样的事件处理程序:

void InfoMessageHandler(object sender, SqlInfoMessageEventArgs e)
{
    MessageBox.Show(e.Message);
}

并将其附加到活动中:

var connection = new SqlConnection(connectionString);
connection.InfoMessage += InfoMessageHandler;

关于结果,您可以使用SqlCommand类对数据库执行查询并获取结果。例如:

using (var connection = new SqlConnection(connString))
{
    var cmd = new SqlCommand(sql, connection );
    cmd.CommandText = "SELECT 'Sample value'";  
    MessageBox.Show(Convert.ToString(cmd.ExecuteScalar()));
}

答案 1 :(得分:0)

在没有很多解释的情况下,您不太清楚您要达到的目标或原因。但是要回答,只需使用PRINT。

SELECT 'Sample Value'

PRINT 'Sample Value'

将退还您的一切。如果您希望在较大的语句中返回不同的消息,也可以将PRINT与变量一起使用

SET NOCOUNT ON;
DECLARE @Message NVARCHAR(100) = N'SampleValue';
SELECT @Message;
PRINT @Message;

答案 2 :(得分:0)

结果消息标签是SSMS(SQL客户端)视图,这些视图已附加到SQL Server的不同传出通道中。

所有没有DML操作(插入,更新等)的SELECT语句将转到标准结果传出通道,并显示在SSMS的结果标签中。这些是结果集,因此它们都是具有N列和M行的表。

enter image description here

消息结果通常是客户端可能需要的临时信息,例如警告,受DML操作影响的行数和错误消息。

enter image description here

您应使用SELECT结果,临时表或OUTPUT变量在存储过程之间传输数据,并出于这个原因避免使用/解析消息。我强烈建议阅读this post,以了解有关如何在存储过程之间移动数据的所有可能方式,以及它们的利弊。

如果只需要文字值(只有1行和1个值),则可以使用标量函数而不是存储过程:

CREATE FUNCTION dbo.GetStringValue ()
RETURNS VARCHAR(100) AS
BEGIN
    RETURN 'Sample Value'
END

GO

SELECT dbo.GetStringValue() AS Result

enter image description here

可以将结果分配给这样的变量:

DECLARE @Result VARCHAR(100) = dbo.GetStringValue()