SQL Server,取存储过程返回值。 20
1、SQLServer2008,用的数据库同步(主服务器发布,备服务器订阅)2、用下面存储过程查询结果:execsp_replmonitorhelppublication...
1、SQL Server 2008,用的数据库同步(主服务器发布,备服务器订阅)
2、用下面存储过程查询结果:
exec sp_replmonitorhelppublication NULL;;
3、在结果集中,我想取出status字段的值。
附加说明:
1、sp_replmonitorhelppublication存储过程无法修改;
2、sql脚本内容如下:
use distribution;
create table #tmp_publicationdata
(
publisher_db sysname
,publication sysname
,publication_id int
,publication_type int
,status int -- publication status defined as max(status) among all agents
,warning int -- publication warning defined as max(isnull(warning,0)) among all agents
,worst_latency int
,best_latency int
,average_latency int
,last_distsync datetime -- last sync time
,retention int -- retention period
,latencythreshold int
,expirationthreshold int
,agentnotrunningthreshold int
,subscriptioncount int -- # of subscription
,runningdistagentcount int -- # of running agents
,snapshot_agentname sysname null
,logreader_agentname sysname null
,qreader_agentname sysname null
,worst_runspeedPerf int
,best_runspeedPerf int
,average_runspeedPerf int
,retention_period_unit tinyint
) ;
INSERT INTO #tmp_publicationdata exec sp_replmonitorhelppublication NULL;
exit(select status from #tmp_publicationdata;)
3、我需要在.bat文件中,调用脚本并判断返回值,但偶尔会报错:
消息 8164,级别 16,状态 1,服务器 WIN-TOBTEG3RM98,过程 sp_MSload_tmp_replicati
on_status,第 80 行
INSERT EXEC 语句不能嵌套。
求方法。谢谢! 展开
2、用下面存储过程查询结果:
exec sp_replmonitorhelppublication NULL;;
3、在结果集中,我想取出status字段的值。
附加说明:
1、sp_replmonitorhelppublication存储过程无法修改;
2、sql脚本内容如下:
use distribution;
create table #tmp_publicationdata
(
publisher_db sysname
,publication sysname
,publication_id int
,publication_type int
,status int -- publication status defined as max(status) among all agents
,warning int -- publication warning defined as max(isnull(warning,0)) among all agents
,worst_latency int
,best_latency int
,average_latency int
,last_distsync datetime -- last sync time
,retention int -- retention period
,latencythreshold int
,expirationthreshold int
,agentnotrunningthreshold int
,subscriptioncount int -- # of subscription
,runningdistagentcount int -- # of running agents
,snapshot_agentname sysname null
,logreader_agentname sysname null
,qreader_agentname sysname null
,worst_runspeedPerf int
,best_runspeedPerf int
,average_runspeedPerf int
,retention_period_unit tinyint
) ;
INSERT INTO #tmp_publicationdata exec sp_replmonitorhelppublication NULL;
exit(select status from #tmp_publicationdata;)
3、我需要在.bat文件中,调用脚本并判断返回值,但偶尔会报错:
消息 8164,级别 16,状态 1,服务器 WIN-TOBTEG3RM98,过程 sp_MSload_tmp_replicati
on_status,第 80 行
INSERT EXEC 语句不能嵌套。
求方法。谢谢! 展开
1个回答
展开全部
如果返回标量值的话,例如文章的个数,可以使用储存过程的输出(OUTPUT)参数。在定义存储过过程时为参数指定OUTPUT关键字。C#调用存储过程时指定参数SqlParameter对象的Direction属性为Output。
如果是返回多个结果集的话,可以直接在存储过程中使用多个select查询就行。在C#代码中使用SqlDataReader对象的NextResult方法提取下一个结果集。
请采纳答案,支持我一下。
如果是返回多个结果集的话,可以直接在存储过程中使用多个select查询就行。在C#代码中使用SqlDataReader对象的NextResult方法提取下一个结果集。
请采纳答案,支持我一下。
追问
如果用C#等其它编程方法的话,还用这么麻烦?
随便用个Query控件,执行存储过程,就可以把结果集取出来了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询