从asp页面发送值到SQL存储过程并返回值?

时间:2014-06-27 14:38:55

标签: sql-server stored-procedures vbscript asp-classic

我有一个场景,基本上我需要从asp页面取消订单,调用SQL存储过程,然后存储过程需要发回通用响应以在ASP页面上显示或使用...但是我不知道我需要在asp端和sql端使用哪些语句来使其工作?

例如:

ASP:

Dim cmdSearch, prmFields
Set cmdCancel = Server.CreateObject("ADODB.Command")
Set prmFields=cmdCancel.CreateParameter("@order_id",adNumeric,adParamInput,9, order_id) 
prmFields.Precision=9
cmdAdmin.Parameters.Append prmFields
Set prmFields=cmdAdmin.CreateParameter("@customer_id",adNumeric,adParamInput,5, customer_id)
prmFields.Precision=5
cmdAdmin.Parameters.Append prmFields
cmdCancel.CommandText = "sp_cancel_order"

然后存储过程看起来像:

ALTER PROCEDURE [dbo].[sp_cancel_order]
    --order ID passed
    @order_id numeric(9,0),
    --customer id passed
    @customer_id numeric(5,0),
    @status char(1)
AS
BEGIN
    SET @status = 'A' --TEST VALUE

    -- Insert statements for procedure here
    IF @order_id <> '' AND @order_id IS NOT NULL
    BEGIN
        IF @status = '' OR @status = 'A' OR @status = 'B'
        BEGIN
            --Insert cancellation record into cancel table
            EXEC sp_insert_cancel @order_id
                   --NEED TO SEND BACK STATIC (SUCCESS) MESSAGE TO ASP PAGE HERE
        END
    END
    ELSE
    --NEED TO SEND BACK STATIC (ERROR) MESSAGE TO ASP PAGE HERE
END

1 个答案:

答案 0 :(得分:2)

这是一种方法,在存储过程中使用输出参数。

修改存储过程以包含输出参数:

@order_id numeric(9,0),
@customer_id numeric(5,0),
@status char(1),
@message nvarchar(40) OUTPUT

并为其分配正确的错误/返回消息:

SET @message = 'Error: I got confused.'

在VBScript代码中,将param添加到命令对象:

Set prmFields = cmdAdmin.CreateParameter("Message", adVarChar, adParamOutput, 40)
cmdAdmin.Parameters.Append prmFields

稍后,执行命令后,您可以检索其输出/返回值:

cmdAdmin.Parameters("Message").Value

这只是从存储过程传回一个值(在本例中为字符串)的示例。您可以传回一个数字错误值,并将错误描述作为ASP页面的一部分进行查找,或者传回一个简单的布尔值(true / false,pass / fail)值。由你决定。