asp调用储存过程,怎么弄都不成功,郁闷,帮我看看,谢谢先
Set ComSP=Server.CreateObject("ADODB.Command")
CmdSP.Commandtype = adCmdStoredProc
CmpSP.Parameters.Append CmpSP.CreateParameter("@dDate",adDate,adParamInput,"2005-2-1")
CmpSP.Parameters.Append CmpSP.CreateParameter("@FromDate",adDate,adParamInput,"2005-1-26")
CmpSP.Parameters.Append CmpSP.CreateParameter("@ToDate",adDate,adParamInput,"2005-2-25")
Set CmpSP.ActiveConnection=conn
ComSP.CommandText="dbo.mp_DaySaleLY"
Set Rs2=Server.CreateObject("ADODB.Recordset")
Rs2.CursorType=3
Rs2.open CmpSP,,1,1
其中conn连接字符串,dbo.mp_DaySaleLY储存过程在SQLServer中是过多次,没有问题
但上面代码执行却不行,帮忙看看是什么原因
在asp调用储存过程 是不是还要包含什么声明之类的?
-----------------初学者,呵呵!
问题点数:50、回复次数:10Top
1 楼libao1983(神勇无敌小豹子)回复于 2005-05-25 14:01:29 得分 5
不要用command
用connection
然后,execute 存储过程名Top
2 楼lovcal(枫兮)回复于 2005-05-25 14:03:49 得分 0
我要获取Rs2的记录个数,就是要显示Rs2,可以么?Top
3 楼michael3a()回复于 2005-05-25 14:08:10 得分 5
应该没什么问题,是不是你的con定义的有问题阿Top
4 楼lovcal(枫兮)回复于 2005-05-25 14:14:23 得分 0
Connstr = "DRIVER={SQL Server};SERVER="&DataServer&";UID="&LoginUser&";PWD="&LoginPass&";DATABASE="&DataBase
Set Conn=Server.CreateObject("ADODB.CONNECTION")
Conn.Open Connstr
我以前使用adoRecordset直接查询的,现在改为用储存过程,应该没问题吧
但我显示rs.recordcount都不行啊,是不是我参数什么的写错了?Top
5 楼xjb_netboy(绝对有问题)回复于 2005-05-26 09:52:55 得分 25
我有一个调成功的例子,贴出来,供楼主,参考。
/*
Object:
Created By: xjb
Version: 1.0
Description:
Usage:
Created : 2005/1/4 Last Changed: 2005/1/4
Notes:
--WITH ENCRYPTION
*/
/*
CREATE TABLE [dbo].[EP_USRInfo] (
[USR_ID] [int] IDENTITY (200551, 1) NOT NULL ,
[EP_ID] [int] NULL ,
[USR_NAME] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[USR_EMAIL] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[USR_Static] [bit] NULL ,
[USER_Checked] [bit] NULL ,
[USer_CheckTime] [smalldatetime] NULL ,
[USR_CreateTime] [smalldatetime] NOT NULL
) ON [PRIMARY]
SELECT USR_ID, EP_ID, USR_NAME, USR_EMAIL, USR_Static, USER_Checked,
USer_CheckTime, USR_CreateTime
FROM EP_USRInfo
INSERT INTO EP_USRInfo
(USR_ID, EP_ID, USR_NAME, USR_EMAIL, USR_Static, USER_Checked,
USer_CheckTime, USR_CreateTime)
VALUES (,,,,,,,)
CREATE TABLE [dbo].[EP_USR] (
[USR_ID] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[EP_TestID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[USR_STATUS] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[USR_NO] [nvarchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[USR_REPORT_ID] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[USR_CreateTime] [smalldatetime] NULL
) ON [PRIMARY]
SELECT USR_ID, EP_TestID, USR_STATUS, USR_NO, USR_REPORT_ID,
USR_CreateTime
FROM EP_USR
INSERT INTO EP_USR
(USR_ID, EP_TestID, USR_STATUS, USR_NO, USR_REPORT_ID, USR_CreateTime)
VALUES (,,,,,)
*/
CREATE PROCEDURE [dbo].[EPaddUser]
@EP_ID INT,
@USR_NAME varchar (255) ,
@EP_TestID varchar (255)
as
--@USR_EMAIL @USR_ID,
declare @USR_ID as int
declare @USR_EMAILString as nvarchar (255)
--SELECT @USR_ID= IDENT_CURRENT('EP_USRInfo ') + (SELECT IDENT_INCR('EP_USRInfo'))
INSERT INTO EP_USRInfo (EP_ID, USR_NAME,USR_TestIDString) VALUES (@EP_ID, @USR_NAME,@EP_TestID)
SELECT @USR_ID= IDENT_CURRENT('EP_USRInfo ')
--INSERT INTO EP_USR (USR_ID, EP_TestID) VALUES (@USR_ID, @EP_TestID)
declare @string varchar(8000)
select @string = @EP_TestID
declare @i as int,@j int
select @i=charindex(',',@string+','),@j=1
while @i>1
begin
print '-----------------------------------'
print '序号:'
print @j
print '值:'
print left(@string,@i-1) + ' yes'
--'
declare @tempVar3 varchar(200)
--select @tempVar3=cast('虚拟邮箱' as varchar(50)) +cast(@USR_ID as varchar(50)) + CAST( left(@string,@i-1)as varchar(2)) + cast('@szhr.gov.cn' as varchar(50))
select @tempVar3=cast(@USR_ID as varchar(50)) + CAST( left(@string,@i-1)as varchar(2)) + cast('@szhr.gov.cn' as varchar(50))
print '-------------------'
print @tempVar3
print '-----------------'
INSERT INTO EP_USR (USR_ID, EP_TestID,USR_EMAIL) VALUES (@USR_ID, left(@string,@i-1), @tempVar3)
select @string=substring(@string,@i+1,8000)
,@i=charindex(',',@string+',')
,@j=@j+1
--'处理程序
end
GO
<%
'set rs=server.createobject("ADODB.recordset")
set Cmd=server.createobject("ADODB.Command")
Cmd.ActiveConnection = con
Cmd.CommandType = adCmdStoredProc
Cmd.CommandText = "EPaddUser"
' Cmd.Parameters.Append Cmd.CreateParameter("@ReturCode",adInterger,adparamReturnValue)
Cmd.Parameters.Append Cmd.CreateParameter("@EP_ID", adInteger, adParamInput)
Cmd("@EP_ID") = session("cid")
Response.Write("<br>")
'---
Cmd.Parameters.Append Cmd.CreateParameter("@USR_NAME",adVarChar,adparamInput,255)
Cmd("@USR_NAME") = request("USR_NAME")
response.Write(request("USER_NAME"))
Response.Write("<br>")
'---
Cmd.Parameters.Append Cmd.CreateParameter("@EP_TestID",adVarChar,adparamInput,255)
Cmd("@EP_TestID") =checkvar
response.Write(checkvar)
Response.Write("<br>")
Response.Write("End")
Cmd.Execute
%>
另外,在IIS中的帮助例子中有一个调用sp过程的例子,楼主可以调一下。Top
6 楼lovcal(枫兮)回复于 2005-05-26 10:09:36 得分 0
我想要获取储存过程执行的返回记录集啊,到现在为止,直接用recordset.open 的方法,只能手动遍历记录集取得返回记录的个数,但用ADOCommand的方法,就是怎么都没有,好郁闷,实在不行只能用第一种笨方法了……Top
7 楼langzi520(虽左但右)回复于 2005-05-26 16:12:32 得分 5
慢慢学 莫急!Top
8 楼itzhiren(itzhiren)回复于 2005-05-26 16:55:17 得分 5
Rs2.open CmpSP,,1,1
这个怎么没有数据库连接句柄?Top
9 楼lovcal(枫兮)回复于 2005-05-27 09:37:59 得分 0
我也是刚刚看到某位大虾的例子,我对这一点头绪都没有
谁给我一个简单的例子试试啊,就是查询,然后返回记录集在一个adodataset中,可以获取记录个数就行,谢谢了Top
10 楼superdullwolf(超级大笨狼,每天要自强,MVP)回复于 2005-05-27 09:46:24 得分 5
sql="exec SQLproc 1,2,3"
set rs=cn.execute(sql)
简单就可以了Top




