老大们,帮小弟看看,为何我无法调用这个存储过程阿
--存储过程为
CREATE PROCEDURE dbo.oa_SumByKind @xn varchar(50) AS
--set nocount on
(此部分太长,删去)
(在查询分析器里执行没有问题,可以返回值)
select * from #mytemp1_col
select * from #mytemp1
--drop table #mytemp1_col
--drop table #mytemp1
--drop table #mytemp
--set nocount off
GO
--执行结果
--#mytemp1_col
col_name show id
myid 0 1
项目名称 1 2
DN100 1 3
DN150 1 4
DN300 1 5
DN600 1 6
--#mytemp1
name dn100 dn150 dn300 dn600 id
666 220.0 -1.0 111.0 -1.0 1
99 123.0 123.0 600.0 -1.0 2
9988 8956.0 -1.0 -1.0 662.0 3
--asp 调用
set temp = Server.CreateObject("ADODB.recordSet")
Sql="exec oa_SumByKind '" & xn & "'"
temp.open sql,cn,1,1
response.Write temp("myid")
response.End()
提示错误:
ADODB.Recordset 错误 '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
问题点数:100、回复次数:13Top
1 楼baikaishui_0825(baikaishui)回复于 2005-05-18 10:16:49 得分 30
myid从那里来?Top
2 楼baikaishui_0825(baikaishui)回复于 2005-05-18 10:19:09 得分 0
try:
--select * from #mytemp1
Top
3 楼mornlena(MoRn)回复于 2005-05-18 10:41:29 得分 0
#mytemp1_col 存储 #mytemp1 这个表中所有列的名称
Top
4 楼mornlena(MoRn)回复于 2005-05-18 10:43:22 得分 0
自己顶,很急啊,路过的帮忙顶顶也好啊Top
5 楼baikaishui_0825(baikaishui)回复于 2005-05-18 10:53:27 得分 0
--#mytemp1
name dn100 dn150 dn300 dn600 id
666 220.0 -1.0 111.0 -1.0 1
99 123.0 123.0 600.0 -1.0 2
9988 8956.0 -1.0 -1.0 662.0 3
这个表里没看到你myid这一列?Top
6 楼mornlena(MoRn)回复于 2005-05-18 10:57:44 得分 0
哦,就是myid = id #mytemp1_col 里就是存 #mytemp1列名,我复制的时候弄错了,这里应该没有问题,因为在查询分析器里可以返回结果,而且正确,主要是我发在asp里调用返回的记录集阿Top
7 楼baiyunfei(虚度残生)回复于 2005-05-18 11:07:06 得分 70
先检查你需要的字段是否在返回的记录集内
另外,存储过程返回了两个记录集,asp调用后,默认是引用第一个记录集,即此时可以获得select * from #mytemp1_col 的内容。要使用第二个记录集,需要这样:
<%
set temp = Server.CreateObject("ADODB.recordSet")
Sql="exec oa_SumByKind '" & xn & "'"
temp.open sql,cn,1,1
'...使用完第一个记录集体后
temp.NextRecordSet
'此时可以得到第二个记录集内容了
%>Top
8 楼baiyunfei(虚度残生)回复于 2005-05-18 11:17:05 得分 0
不好意思,漏了一点,应该是
set temp=temp.NextRecordSet
Top
9 楼mornlena(MoRn)回复于 2005-05-18 11:17:29 得分 0
set mytemp = Server.CreateObject("ADODB.recordSet")
Sql="exec oa_SumByKind '" & xn & "'"
mytemp.open sql,cn,1,1
response.Write mytemp.recordcount'("isshow")
response.End()
是这个错误啦1:(
ADODB.Recordset 错误 '800a0e78'
Operation is not allowed when the object is closed.
到底怎么回事,听你们说的很简单啊!
我存储过程 在查询分析器里可以显示查到的记录阿
Top
10 楼baiyunfei(虚度残生)回复于 2005-05-18 11:17:37 得分 0
不好意思,漏了一点,应该是
set temp=temp.NextRecordSet
Top
11 楼mornlena(MoRn)回复于 2005-05-18 14:41:34 得分 0
自己顶Top
12 楼baiyunfei(虚度残生)回复于 2005-05-18 15:07:38 得分 0
还没搞定吗?这样呢:
set mytemp = Server.CreateObject("ADODB.recordSet")
Sql="exec oa_SumByKind '" & xn & "'"
mytemp.open sql,cn,1,1
if not mytemp.eof then
response.Write mytemp.recordcount'("isshow")
response.End()
end if
Top
13 楼mornlena(MoRn)回复于 2005-05-18 17:43:46 得分 0
呵呵,不知道怎就没有事了,换个存储过程执行了一下,又换回来,就好了,麻烦你了Top




