我有一个场景,基本上我需要从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
答案 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)值。由你决定。