|
存储过程: 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语句就会关闭 怎么办??? |
|
|
|
我对SQL不太了觖。帮顶!
|
|
|
关注!
|
|
|
你的存储过程写法有问题
if(select count(*) from users)<5 这里有个判断 或者你直接改为 create proc proc1017 (@strInsert varchar(50)) as select * from users where name = @strInsert 看看是不是运行正确 |
|