这是我写的存储过程 CREATE proc hz @count2 bigint output, @minsl varchar, @maxsl varchar as create table #tmp(qqno bigint,[check] tinyint,sumsl varchar) create table #tmp1(qqno bigint,friendqqno bigint,addtime datetime,[check] tinyint,sumsl varchar) insert into #tmp select qqno,[check],count(*) as count1 from friendtable group by qqno,[check] order by qqno insert into #tmp1 select #tmp.qqno,friendqqno,addtime,#tmp.[check],sumsl from #tmp left join friendtable on #tmp.qqno=friendtable.qqno where sumsl>=@minsl and sumsl<=@maxsl select @count2=count(*) from #tmp1 GO 在asp中 set o_command=server.createobject("ADODB.Command") set o_command.ActiveConnection=conn1 o_command.CommandText="hz" o_command.CommandType=4 set o_prm=o_command.parameters o_prm.Append o_command.CreateParameter("@count2",adinteger,adParamOutput) o_prm.Append o_command.CreateParameter("@minsl",advarchar,adParamInput,friends) o_prm.Append o_command.CreateParameter("@maxsl",advarchar,adParamInput,friends1) o_command.execute() count2=cmd("@count2") 为什么会出现这样的错误呢? Microsoft VBScript 编译器错误 错误 '800a03f6' 缺少 'End' /iisHelp/common/500-100.asp,行242 Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server]过程 'hz' 需要参数 '@minsl',但未提供该参数。 /friendtable1.asp,行65
这样的方法比较好用 参考一下吧 给存储过程传递参数 : 如果存储过程中不用参数,而是单一的sql语句,还显示不出调用存储过程的优势! 比如说一bbs的查询,可以按作者和主题查询!则可以建立存储过程如下: 参数keyword为关键字,choose是选择查询的方法。 CREATE PROCEDURE [dbo].[dt_bbs] @keyword varchar(20)=null, @choose int=null as if choose=1 select * from bbs where name like @keyword else select * from bbs where subject like @keyword return go 这样我们调用存储过程时只需将参数传递过去就行了,而省去在asp中来写一段程序 用第一种方法: set rs=server.createobject("adodb.recordset") sql="exec dt_bbs '"&keyword&"',"&choose&"" rs.open sql,conn,1,1