Bra*_*adC 2 sql-server ssms sql-server-2005
我有一个现有的SQL 2005存储过程,由于某种原因,它将结果输出到SSMS 中的" 消息"窗格而不是" 结果"窗格.(它实际上已经编译并部署到我们所有服务器的CLR程序,并用于另一个日常进程.所以我无法更改它,我只想使用它的输出.)
为了便于讨论,这里的存储过程的行为方式相同:
CREATE PROCEDURE [dbo].[OutputTest]
@Param1 int, @Param2 varchar(100)
AS
BEGIN
SET NOCOUNT ON;
PRINT 'C,10000,15000';
PRINT 'D,30000,90000';
PRINT 'E,500,50000';
END
Run Code Online (Sandbox Code Playgroud)
因此,那里没有实际的SELECT语句,如果你运行它,你只会在Messages窗格中看到这些结果.
我有什么方法可以将这些结果用作更大查询的一部分吗?把它们放在临时表或其他东西,所以我可以解析它们?
没有"正常的东西"有效,因为这里没有真正的"输出":
INSERT INTO #output
EXEC OutputTest 100, 'bob'
Run Code Online (Sandbox Code Playgroud)
只是表明
C,10000,15000
D,30000,90000
E,500,50000
(0 row(s) affected)
Run Code Online (Sandbox Code Playgroud)
在消息窗格上,临时表实际上没有任何内容.
你能从C#代码执行存储过程吗?如果是这样,您可能可以挂钩到名为SqlInfoMessage的SqlCommand事件:
SqlConnection _con = new SqlConnection("server=.;
database=Northwind;integrated Security=SSPI;");
_con.InfoMessage += new SqlInfoMessageEventHandler(_con_InfoMessage);
Run Code Online (Sandbox Code Playgroud)
事件处理程序将如下所示:
static void _con_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
string myMsg = e.Message;
}
Run Code Online (Sandbox Code Playgroud)
"e.Message"是打印到SQL Server Mgmt Studio中的消息窗口的消息.
虽然它不漂亮,可能需要一些丑陋的解析代码,但至少你可以抓住这些消息,我希望!
渣
| 归档时间: |
|
| 查看次数: |
7739 次 |
| 最近记录: |