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语句就会关闭
怎么办???

...全文
76 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不太了觖。帮顶!

28,390

社区成员

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

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