存储过程同时返回值和记录集,该如何取得返回值
我有一个存储过程,执行完成之后,有以下三种可能,该如何正确取得返回值?
1、同时记录集(非空,有记录的)和返回值(先返回记录集,再有返回值)
2、返回一个空记录集和返回值(先返回一个空记录集,再有返回值)
3、只返回一个返回值,没有结果集
执行存储过程的ASP代码如下:
Command2.ActiveConnection = MM_vod_data_STRING
Command2.CommandText = "declare @re int EXECUTE @re=p_vcall '"&tel&"' select @re"
Command2.CommandType = 1
Command2.CommandTimeout = 0
Command2.Prepared = true
set re=Command2.Execute()
if re(0)=0 then '********
'程序段---------------
else
'程序段2---------------
end if
当遇到第1种情况时,正常执行,re(0)取得的是记录集第1列的数据。
当遇到第2种情况时,执行到“******”标识的行时就有问题了,提示:“在对应所需名称或序数的集合中,未找到项目。”,因为它先返回一个空记录集,所以取不到列的数据,所以出错。
当遇到第3种情况时,正常执行,re(0)取得的是返回值。
我该如何正确取得返回值,而不是记录集呢?
问题点数:0、回复次数:8Top
1 楼miniburger(我行我素)回复于 2005-04-02 08:06:47 得分 0
十万火急啊!哪位大侠指点迷津啊??Top
2 楼miniburger(我行我素)回复于 2005-04-04 15:05:40 得分 0
顶啊!!!HELP!!!Top
3 楼ryuginka(一米八五的猪)回复于 2005-04-04 15:19:19 得分 0
你表达清楚点啊,或者贴出你的存储过程.
还有是什么数据库?Top
4 楼miniburger(我行我素)回复于 2005-04-04 15:43:51 得分 0
存储过程是这样
CREATE PROCEDURE p_vCall
@cPhoneNo varchar(10)
AS
DECLARE @Error int, @RowCount int
IF @cPhoneNo <>''
SELECT * FROM tb_VPhone WHERE tb_VPhone.cPhoneNo=@cPhoneNo
SELECT @Error=@@Error, @RowCount=@@RowCount
IF @Error<>0
BEGIN
RETURN 9
END
ELSE IF @RowCount<=0
BEGIN
RETURN 5
END
ELSE RETURN 0
GO
用的是MSSQL数据库
请指点迷津Top
5 楼fcuandy(了此残生.)回复于 2005-04-04 15:51:03 得分 0
CREATE PROCEDURE p_vCall
@cPhoneNo varchar(10)
AS
-------------------------------------------------
没有定义输出参数,又怎么能取出?Top
6 楼miniburger(我行我素)回复于 2005-04-04 15:59:30 得分 0
RETURN不就是已经是返回值 了吗??
我在ASP执行存储过程的时候是这样的"declare @re int EXECUTE @re=p_vcall '"&tel&"' select @re"
这里就定义有返回的变量Top
7 楼fcuandy(了此残生.)回复于 2005-04-04 16:06:28 得分 0
再去读读关于带参数存储过程的资料吧Top
8 楼net205(人不可以无耻到这种地步)回复于 2005-04-04 17:43:15 得分 0
Command2.CommandText = "declare @re int EXECUTE @re=p_vcall '"&tel&"' select @re"
这一句declare @re int后面不用;也行吗??
建议如 fcuandy(www.webizs.com)所说,用output参数,然后可以用Command对象,网上搜索一下,比较多,不过我没有试成功。
还有一个办法就是我提议你可以把结果在最后可以select 出来成一个记录集形式,然后recordset对象里有一个NextRecordset方法可以取下条记录集Top




