日期:2011-12-06  浏览次数:20898 次

以下是asp代码(demo.asp):
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="adovbs.inc"-->
<%
’通用的ASP读取MSSQL存储过程代码示例
’返回临时表记录集
’带传递参数
dim conn,connstr,cmd,rs
connstr = "Provider=SQLOLEDB;server=服务器计算机名或IP地址;uid=用户名;pwd=密码;DATABASE=数据库名称;" ’连接数据库字符串
Set conn = Server.CreateObject("ADODB.Connection") ’创建conn对象
conn.open connstr ’打开数据库
Set Cmd=server.CreateObject("Adodb.Command") ’创建command对象
Cmd.ActiveConnection=conn
Cmd.CommandText="存储过程名" ’调用存储过程名称
Cmd.CommandType=4
cmd.prepared=true
Cmd.Parameters.Append Cmd.CreateParameter("fyear",adInteger,1,2,"2007")  ’示例传递给存储过程一个年份,类型是integer,对应存储过程中的@fyear变量
Cmd.Parameters.Append Cmd.CreateParameter("myname",adVarChar,adParamInput,50,"爱易学习网") ’示例传递给存储过程一个中文字符,类型是varchar,长度为50,对应存储过程中的@myname变量
set rs=Cmd.execute
’<!--循环显示返回记录集全部记录-->
while not rs.eof
response.write "<div>"&rs(0)&"|"&rs(1)&"|"&rs(2)&"</div>"
rs.movenext
wend
’<!--循环显示返回记录集全部记录-->
’<!--释放对象-->
rs.close
set rs = nothing
conn.close
set conn = nothing
set cmd = nothing
’<!--释放对象-->
%>

以下是存储过程代码:
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO
ALTER PROCEDURE 存储过程名 
(
@fyear int,
@myname varchar(50)
)
AS
set nocount on
begin
--创建临时表
create table #tmp_demo(tmp_fyear int,tmp_name varchar(50),tmp_info varchar(2000),tmp_sum int,tmp_int int)
insert into #tmp_demo select fyear,fname,finfo,sum(fsum),
isnull((select fint from tb2 where fid=tb1.fid and fname=tb1.fname),0) 
from tb1
group by fname order by fname
--示例判断并返回记录
if (@fyear<>’’ and @myname=’’)
select * from #tmp_demo where tmp_fyear = @fyear order by tmp_sum desc
else if (@fyear<>’’ and @myname<>’’)
select * from #tmp_demo where tmp_fyear = @fyear and tmp_name = @myname order by tmp_sum desc
else
select * from #tmp_demo order by tmp_sum desc
end
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

以下adovbs.inc代码
<%
’-----------