注册 登录
编程论坛 ASP技术论坛

有关asp调用存储过程问题

onlybaby314 发布于 2010-07-14 20:18, 442 次点击
以下是asp里面调用的
Set MyComm = Server.CreateObject(")
with MyComm
.ActiveConnection = connGift
.CommandText = "sp_EXT_VIP_GetGift"
.CommandType = 4
.Prepared = true
.Parameters.Append .CreateParameter("@RUN_TYPE",3,1,,1)
.Parameters.Append .CreateParameter("@GIFT_IDs",200,1,1023,"2,1")
.Parameters.Append .CreateParameter("@ROW_COUNT",3,2)
.Parameters.Append .CreateParameter("@IS_SUCCESS",3,2)
.Parameters.Append .CreateParameter("@Message",200,2,80)
Set MyRst = .Execute
end with
response.write(MyComm(3))
这里为何老是没法输出值,也不抱任何错误。注:存储过程肯定是没问题的。因为在.net里面执行过,完全正常的。


直接在查询器里执行的:
declare @RUN_TYPE int--运行的类型(为0时表示获取数据总数,其他表示获取数据)
declare @GIFT_IDs varchar(1023)--商品ID 多个商品,用逗号分开
declare @ROW_COUNT int--记录总数量
declare @IS_SUCCESS int--是否成功, 0为失败,1为成功
declare @Message varchar(80)--返回消息

set @RUN_TYPE = 1
set @GIFT_IDs = '1,4,30,23'
exec sp_EXT_VIP_GetGift @RUN_TYPE,@GIFT_IDs,@ROW_COUNT out,@IS_SUCCESS out, @Message out
print (@ROW_COUNT)
8 回复
#2
onlybaby3142010-07-14 21:24
没人回答我么
#3
hams2010-07-15 09:02
MyComm(3)这个有值么?
#4
onlybaby3142010-07-15 09:12
正确的应该会有0或者1输出的。就是IS_SUCCESS这个变量。
#5
onlybaby3142010-07-15 11:26
我要疯了,哪位高人解答下啊。。。
#6
cnfarer2010-07-15 11:51
加个判断试试:
if MyRst.state = 0 then '未取到数据
#7
onlybaby3142010-07-15 12:35
以下是引用cnfarer在2010-7-15 11:51:57的发言:

加个判断试试:
if MyRst.state = 0 then '未取到数据
进入到'未取到数据'的判断里面了。
#8
onlybaby3142010-07-15 12:36
以下是存储过程源代码:

USE [ALPHABET_TEST]
GO
/****** 对象:  StoredProcedure [dbo].[sp_EXT_VIP_GetGift]    脚本日期: 07/14/2010 13:31:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_EXT_VIP_GetGift]

@RUN_TYPE int,--运行的类型(为0时表示获取数据总数,其他表示获取数据)
@GIFT_IDs varchar(1023),--商品ID 多个商品,用逗号分开
@ROW_COUNT int out,--记录总数量
@IS_SUCCESS int out,--是否成功, 0为失败,1为成功
@Message varchar(80) out--返回消息


AS
BEGIN

    declare @num int
    if @RUN_TYPE = 0
        begin
            select @ROW_COUNT=count(*) from gift where publ_date <= getdate() and [status] = 'A'
        return
        end
     else
        begin
 
            declare @ids table(AUTO_ID int  primary key IDENTITY(1,1), GIFT_ID numeric(6, 0))

            begin try
                insert into @ids select * from dbo.f_splitstr(@GIFT_IDs,',')
            end try
            begin catch
                set @IS_SUCCESS = 0
                set @Message = '参数数据类型错误!'
            return
            end catch

            select [@ids].GIFT_ID,GIFT.GIFT_NUM,GIFT.GIFT_NAME,GIFT.PNT_NEEDED,GIFT.PUBL_DATE from @ids left outer join GIFT on [@ids].GIFT_ID = GIFT.GIFT_ID and GIFT.PUBL_DATE <= getdate() and GIFT.[STATUS] = 'A'

            set @IS_SUCCESS = 1
            set @Message = '数据获取成功!'
        return
        end

END
1