我似乎无法在google中找到正确的答案,或者可能无法使用正确的关键字。
如何获取显示在其中的字符串值
在SQL Server中。
感谢您的帮助
编辑: 我想获取字符串值并将其存储在存储过程中的变量中。
编辑
我想捕获输出消息并将其存储在变量中。这将通过存储过程来处理。因此,我需要一种SQL语法来从结果选项卡和消息选项卡获取字符串。
答案 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行的表。
消息结果通常是客户端可能需要的临时信息,例如警告,受DML操作影响的行数和错误消息。
您应使用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
可以将结果分配给这样的变量:
DECLARE @Result VARCHAR(100) = dbo.GetStringValue()