SSIS中OLE DB Source中如何执行Store Procedure

简介:

有很多人喜欢在OLE DB Source中执行Store Procedure,以得到源数据。但我们经常会遇到这样的情况,在OLE DB SourceSql Command中写好执行Store Procedure的语句后,可以正常Preview,但是当点到Columns标签时,却看不到Store Procedure返回来的结果集,就是说没有columns显示。

解决办法步骤:

1)       确保Store Procedure的最后一句是select语句,即有结果集返回

2)       Store Procedure的开头部分加上SET NOCOUNT ON,不返回计数(表示受 Transact-SQL 语句影响的行数)。 例如:

CREATE PROCEDURE [dbo].[sp_test_Icon]

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

    -- interfering with SELECT statements.

         SET NOCOUNT ON;

-- Insert statements for procedure here

         select number, name from #t2 --这句返回结果集

END

GO

3)       OLE DB SourceSql Command中执行Store Procedure的前面加上SET FMTONLY OFF,例如:

SET FMTONLY OFF

EXEC [dbo].sp_procedure1

顺便提一下,当把FMTONLY设置成ON时,只将元数据(列信息)返回给客户端,而不返回实际的行,一般用于用于测试响应的格式,而不必实际执行查询。所以这里我们要把它设成OFF

这样就能够在Columns标签中看到Store Procedure返回的结果集了。



   本文转自loose_went博客园博客,原文链接:http://www.cnblogs.com/michaelxu/archive/2009/10/16/1584284.html,如需转载请自行联系原作者

相关文章
|
SQL Oracle 关系型数据库
Oracle 使用DB link update table & TNS:linstener was not given the servicename in connect_data处理方式
业务需求:需要在Oracle1 的A表增加一个字段,这个字段来自于Oracle2 的B表的一个字段。
128 0
|
存储 SQL Go
SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)
原文:SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 遇到的问题(Problems)...
1472 0

热门文章

最新文章