存储过程在VC中调用时和在查询分析器里调用时结果不一样?

evlon 2004-06-08 12:32:30
我写了一个数据导入的存储过程,在使用时发现用VC调用时存储过程执行到一半就退出了,而且还没有提示。结果Excel表中的数据也没有完成导入!

而在查询分析器中调用该存储过程就没有问题?

这是为什么呀?头都 大了!
附:

ALTER proc dbo.usp_importExcelAnalysisData
(
@file varchar(300)
)
as
begin

declare @maxPiCi int
,@SheetName varchar(50)
,@SortID int
,@Rows int
,@strRows varchar(30)
,@sql varchar(3000)
,@InSql varchar(500)
,@InSqlNoHdr varchar(500)
,@SelFields varchar(200)
,@RowCount int

--set @SelFields='应答试呼比,每线话务量,平均通话时长'

Select @Rows=RowsToCount from SheetInfo where SortID=@SortID
select @maxPiCi=max(nPiCi) from dbo.AnalysisData
if(@maxPiCi is NULL) set @maxPiCi=0
--print @maxPiCi

declare cur_SheetName Cursor
for
select SheetName,SortID from SheetInfo order by SortID ASC
open cur_SheetName
fetch next from cur_SheetName into @SheetName,@SortID
while @@Fetch_Status=0
begin
set @inSqlNoHdr='Select * from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=NO;DATABASE='+@file+''','+@SheetName+'$) a Where a.F1 like ''%未入库%'''
--print @inSqlNoHdr
execute(@InSqlNoHdr)
Select @RowCount=@@rowcount
if(@rowCount=0)
begin
set @InSql=' from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;DATABASE='+@file+''','+@SheetName+'$) a'
if(@SortID=0) set @SelFields='对端局名,应答试呼比,每线话务量,平均通话时长'
else set @SelFields='电路群名,应答试呼比,每线话务量,平均通话时长'
Select @Rows=RowsToCount from SheetInfo where SortID=@SortID
if(@Rows is NULL)
set @strRows=''
else
set @strRows='top '+cast(@Rows as varchar)+' '
set @Sql='select '+@strRows+cast ((@MaxPiCi+1) as varchar ) +' as nPiCi ,'
+cast (@SortID as varchar ) +' as SheetSortID ,IDENTITY(int,1,1) as RowID,'+@SelFields+' into #tmpData'+

@inSql+ ';insert into AnalysisData
select * from #tmpData'

--print @Sql
execute(@sql)
end

fetch next from cur_SheetName into @SheetName,@SortID
end
close cur_SheetName
deallocate cur_SheetName
end

GO


...全文
138 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
evlon 2004-06-14
  • 打赏
  • 举报
回复
谢谢邹建建兄和niukl,问题已经解决!
niukl 2004-06-14
  • 打赏
  • 举报
回复
如果上述方法也不行的话,建议你把你的存储过程改成下面这样:
CREATE proc dbo.usp_importExcelAnalysisData
(
@file varchar(300)
)
as
begin

declare @maxPiCi int
,@SheetName varchar(50)
,@SortID int
,@Rows int
,@strRows varchar(30)
,@sql varchar(3000)
,@InSql varchar(500)
,@InSqlNoHdr varchar(500)
,@SelFields varchar(200)

--set @SelFields='应答试呼比,每线话务量,平均通话时长'

Select @Rows=RowsToCount from SheetInfo where SortID=@SortID
select @maxPiCi=max(nPiCi) from dbo.AnalysisData
if(@maxPiCi is NULL) set @maxPiCi=0
print @maxPiCi

declare cur_SheetName Cursor
for
select SheetName,SortID from SheetInfo order by SortID ASC
open cur_SheetName
fetch next from cur_SheetName into @SheetName,@SortID
while @@Fetch_Status=0
begin
set @InSql=' from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;DATABASE='+@file+''','+@SheetName+'$) a'
set @inSqlNoHdr=' from OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=NO;DATABASE='+@file+''','+@SheetName+'$) a'
if(@SortID=0) set @SelFields='对端局名,应答试呼比,每线话务量,平均通话时长'
else set @SelFields='电路群名,应答试呼比,每线话务量,平均通话时长'
Select @Rows=RowsToCount from SheetInfo where SortID=@SortID
if(@Rows is NULL)
set @strRows=''
else
set @strRows='top '+cast(@Rows as varchar)+' '
set @Sql='select '+@strRows+cast ((@MaxPiCi+1) as varchar ) +' as nPiCi ,'
+cast (@SortID as varchar ) +' as SheetSortID ,IDENTITY(int,1,1) as RowID,'+@SelFields+' into #tmpData'+

@inSql+ ';insert into AnalysisData
select * from #tmpData'


set @Sql='if (not exists(Select * '+@inSqlNoHdr+' Where a.F1 like ''%未入库%'')) begin '+'execute('''+replace(@sql,'''','''''')+''')'+' end'

print @Sql
execute(@sql)

fetch next from cur_SheetName into @SheetName,@SortID
end
close cur_SheetName
deallocate cur_SheetName
end

GO
zjcxc 2004-06-08
  • 打赏
  • 举报
回复
既然查询分析器中没有问题
说明问题出在你的VC调用处理上

可能的原因:

1.用户权限的问题,执行openrowset需要类似系统管理员(例如)的权限

2.excel文件目录的问题,要求你的excel文件放在sql服务器上.

3.超时的问题,你的数据处理要求较长的时间,执行时发生超时,解决的方法是设置对象的超时属性,以ado为例,设置对象的:
.commandtimeout=0 --sql处理超时,为0表示不限制
.connectimeout=0 --连接超时.
软件概述 UG(Unigraphics NX)是一款由西门子(Siemens PLM Software)开发的交互式CAD/CAM/CAE系统。作为全球领先的产品工程解决方案,它集成了产品设计、工程仿真与制造加工于一体。其功能强大且应用广泛,能够轻松实现各种复杂实体和造型的构造,为模具、汽车、航空航天及通用机械等行业提供了高性能的机械设计与制图灵活性。 软件基础信息 • 支持系统: 64位 Windows 10、Windows 11 核心功能模块 一、创新设计:高效、灵活、无缝协同 全链路产品设计 涵盖从2D布局、3D建模、装配设计到图纸文档记录的各个环节,大幅提升设计吞吐量,缩短交付周期超35%。 强大的同步建模技术 打破数据壁垒,可无缝导入并直接修改来自其他CAD系统的几何模型,是跨平台协同设计的理想选择。 复杂装配管理 专为大型复杂产品打造,即使面对成千上万的零件也能从容应对,快速识别并解决数字样机的干涉等问题。 集成设计验证 内置自动验证功能,实监控设计是否符合公司及行业标准;结合PLM数据可视化合成,辅助工程师做出更明智的决策。 二、综合仿真(Simcenter 3D):精准预测,降低试错成本 极速前后处理 依托先进的几何引擎,将强大的分析命令与几何编辑紧密集成,相比传统有限元工具,可缩短高达70%的仿真建模间。 全方位结构分析 在同一环境集成线性静力学、动态、疲劳及非线性分析,底层由业界顶尖的NX Nastran解算器提供支持,确保计算的高精度与可靠性。 声学与热管理分析 提供内外声学仿真以优化音质、降低噪音;具备一流的热传导仿真能力,帮助电子产品和工业机械实现最佳热管理方案。 多物理场耦合 简化了结构动力学、热传导、流体流动等复杂物理现象的模拟过程,消除外部数据传输错误,真实还原产品运行工况。 三、智能制造(CAM):打通从计划到车间的数字主线 全面的制造解决方案 提供从工装设计、CAM编程到机床控制器(如Sinumerik)的一体化支持,助力制定更科学的生产决策。 深度集成的PLM环境 借助Teamcenter实现数据和流程的统一管理,避免多数据库冲突,支持重用验证过的加工工艺与刀具库。 车间级互联 通过DNC系统与车间无缝对接,直接将加工数据和刀具清单下发至CNC机床,实现计划与生产的紧密结合。 提质增效 优化NC编程与刀具路径,提升表面精加工水平与零件精度;减少人为错误,显著提高新机床部署成功率及制造资源利用率。 总结 UG NX 2023作为一款集成化的产品工程解决方案,通过其强大的设计、仿真和制造功能,为现代制造业提供了完整的数字化产品开发平台。无论是复杂产品的设计验证,还是精密制造的流程优化,UG NX 2023都能为工程师团队提供高效、可靠的解决方案,助力企业提升产品创新能力和市场竞争力。 适用领域 模具设计、汽车制造、航空航天、通用机械、消费电子等
软件概述 UG(Unigraphics NX)是一款由西门子(Siemens PLM Software)开发的交互式CAD/CAM/CAE系统。作为全球领先的产品工程解决方案,它集成了产品设计、工程仿真与制造加工于一体。其功能强大且应用广泛,能够轻松实现各种复杂实体和造型的构造,为模具、汽车、航空航天及通用机械等行业提供了高性能的机械设计与制图灵活性。 软件基础信息 • 支持系统: 64位 Windows 10、Windows 11 核心功能模块 一、创新设计:高效、灵活、无缝协同 全链路产品设计 涵盖从2D布局、3D建模、装配设计到图纸文档记录的各个环节,大幅提升设计吞吐量,缩短交付周期超35%。 强大的同步建模技术 打破数据壁垒,可无缝导入并直接修改来自其他CAD系统的几何模型,是跨平台协同设计的理想选择。 复杂装配管理 专为大型复杂产品打造,即使面对成千上万的零件也能从容应对,快速识别并解决数字样机的干涉等问题。 集成设计验证 内置自动验证功能,实监控设计是否符合公司及行业标准;结合PLM数据可视化合成,辅助工程师做出更明智的决策。 二、综合仿真(Simcenter 3D):精准预测,降低试错成本 极速前后处理 依托先进的几何引擎,将强大的分析命令与几何编辑紧密集成,相比传统有限元工具,可缩短高达70%的仿真建模间。 全方位结构分析 在同一环境集成线性静力学、动态、疲劳及非线性分析,底层由业界顶尖的NX Nastran解算器提供支持,确保计算的高精度与可靠性。 声学与热管理分析 提供内外声学仿真以优化音质、降低噪音;具备一流的热传导仿真能力,帮助电子产品和工业机械实现最佳热管理方案。 多物理场耦合 简化了结构动力学、热传导、流体流动等复杂物理现象的模拟过程,消除外部数据传输错误,真实还原产品运行工况。 三、智能制造(CAM):打通从计划到车间的数字主线 全面的制造解决方案 提供从工装设计、CAM编程到机床控制器(如Sinumerik)的一体化支持,助力制定更科学的生产决策。 深度集成的PLM环境 借助Teamcenter实现数据和流程的统一管理,避免多数据库冲突,支持重用验证过的加工工艺与刀具库。 车间级互联 通过DNC系统与车间无缝对接,直接将加工数据和刀具清单下发至CNC机床,实现计划与生产的紧密结合。 提质增效 优化NC编程与刀具路径,提升表面精加工水平与零件精度;减少人为错误,显著提高新机床部署成功率及制造资源利用率。 总结 UG NX 2023作为一款集成化的产品工程解决方案,通过其强大的设计、仿真和制造功能,为现代制造业提供了完整的数字化产品开发平台。无论是复杂产品的设计验证,还是精密制造的流程优化,UG NX 2023都能为工程师团队提供高效、可靠的解决方案,助力企业提升产品创新能力和市场竞争力。 适用领域 模具设计、汽车制造、航空航天、通用机械、消费电子等

22,297

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧