asp调用存储过程的问题!!!!急

binghongcha 2003-10-17 11:31:08
asp调用存储过程 执行完存储过程中的insert语句 rs就会关掉是怎么回事,!谁能帮我解决???

存储过程:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[proc1017]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[proc1017]
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
create proc proc1017 (@strInsert varchar(50)) as
if(select count(*) from users)<5
begin
insert into users(name) values(@strInsert)
end
else
begin
insert into users(name) values(@strInsert)
select * from users where name = @strInsert
end

asp页面

<%@ Language=VBScript %>
<!--#include file ="adovbs.inc"-->
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
Dim Cnn, StrCnn ,cmd,rs,ids

ids =Request.Form("id")

Set Cnn = Server.CreateObject("ADODB.Connection")

Set cmd=server.CreateObject("adodb.command")

set rs = server.CreateObject("adodb.recordset")

StrCnn = "Provider=sqloledb; User ID=sa; Password=sa; Initial Catalog=pubs;Data Source=D1T00_WANGZB"

Cnn.Open StrCnn,"sa","sa"
Cnn.BeginTrans
set cmd.ActiveConnection=Cnn


cmd.CommandType =adCmdStoredProc

cmd.CommandText = "proc1017"

set srtInsert = cmd.CreateParameter("@srtInsert",adVarChar,adParamInput,50,ids)

cmd.Parameters.Append srtInsert
set rs=cmd.Execute()

Response.Write cmd.State & Cnn.State&rs.State

Response.Write"<table border=3>"
Response.Write"<tr>"
for i=0 to rs.fields.count-1
Response.Write "<td>"&Ucase(rs(i).Name)&"</td>"
next
Response.Write "</tr>"
do while not rs.eof
Response.Write "<tr>"
for i=0 to rs.fields.count-1
Response.Write"<td>"&rs(i).value&"</td>"
next
rs.MoveNext
Response.Write"</tr>"
loop
Response.Write"</table>"
Cnn.CommitTrans
set conn = nothing

%>
<P> </P>

</BODY>
</HTML>
错误提示

Error Type:
ADODB.Recordset (0x800A0E78)
Operation is not allowed when the object is closed.
/PVTS_Local/porcdure/porcdure1017.asp, line 43


我如过把存储过程中的insert语句去掉事好用的

好像recordset对象执行完insert语句就会关闭
怎么办???

...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovehwq21 2003-11-19
  • 打赏
  • 举报
回复
你的存储过程写法有问题
if(select count(*) from users)<5 这里有个判断
或者你直接改为
create proc proc1017 (@strInsert varchar(50)) as

select * from users where name = @strInsert
看看是不是运行正确
qdubit 2003-10-17
  • 打赏
  • 举报
回复
关注!
yangsm 2003-10-17
  • 打赏
  • 举报
回复
我对SQL不太了觖。帮顶!
Discuz!NT3.0版本针对SQLServer2005/2008的新特性做了存储过程的全面优化,解决了以前版本存储过程因SQLServer2000语法限制造成若干存储过程无法被编译的问题,全面提升数据库运行效率。从Discuz!NT官方得知,目前新版本在官方网站的测试结果良好,showtopic等页面速度提升明显,同时服务器压力也有所降低。 在系统稳定性方面,Discuz!NT3.0的系统重构消灭了所有重复代码,同时将数据和逻辑层进行了彻底分离,避免增加功能时重复数据方法的可能。官方开发人员表示:虽然本次重构的效果短时间内不明显,但是这次重构将为以后版本增加功能打下坚实的基础! 在整体的UI和用户体验设计方面,Discuz!NT3.0在保留传统风格的同时吸取了Discuz!7.0大量被用户肯定的设计元素,形成了Discuz!NT自有的风格。首页的快速发主题可以让大论坛里面只关注某个版块的用户方便分享自己最新的事情,还有弹窗方式的快速登录、注册、发帖、编辑帖子等等快捷的功能,将有更好的用户体验效果。 另外,Discuz!NT3.0的API进行了全面开放,发帖、回复、创建用户、修改用户资料积分、创建版块、获取版块列表、获取帖子列表等功能可以让开发者很轻松的二次开发或者系统整合。3.0版本API取消了2.6版本中API许多功能受到session的限制,3.0版本API可以授权应用程序任意的修改用户密码等一系列操作,真正方便二次开发。值得一提的是,Discuz!NT3.0采用了一系列加密算法来保证安全性,Discuz!NT官方发布的API应用都可以放心使用,第三方开发的应用需要经过Discuz!NT官方认证,用户大可以放心使用。Discuz!NT3.0的API的又一大改进是支持客户端调用,基于安全考虑,官方对客户端调用程序进行了严格的功能限制。 安装包已更新,进入系统设置会提示自动打补丁

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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