【发布时间】:2011-02-12 18:56:49
【问题描述】:
我正在尝试使用带有 ASP 的 SQL Server 存储过程:
ALTER PROCEDURE [dbo].[user_insert]
@firstName NVARCHAR(50) ,
@lastName NVARCHAR(50) ,
@cityid INT ,
@email NVARCHAR(100) ,
@password NVARCHAR(12) ,
@Affiliate INT
AS
BEGIN
DECLARE @index1 INT
SET @index1 = 0
IF ( NOT EXISTS ( SELECT * FROM dbo.tbl_users
WHERE user_email = @email ) )
BEGIN
INSERT INTO dbo.tbl_users
( user_first_name ,
user_last_name ,
city_id ,
user_email ,
user_password ,
Affiliate_id
)
VALUES ( @firstName ,
@lastName ,
@cityid ,
@email ,
@password ,
@Affiliate
)
SET @index1 = ( SELECT @@IDENTITY
END
RETURN @index1
END
ASP 是
Set oCmd = Server.CreateObject("ADODB.Command")
oCmd.ActiveConnection = conn
oCmd.CommandText = "user_insert"
oCmd.CommandType = 4
oCmd.Parameters.Append oCmd.CreateParameter("firstName", 203, 1, 100, "1")
oCmd.Parameters.Append oCmd.CreateParameter("lastName", 203, 1, 100, "2" )
oCmd.Parameters.Append oCmd.CreateParameter("cityid", 3, 1, 2, 1)
oCmd.Parameters.Append oCmd.CreateParameter("email", 200, 1, 100, txtmail)
oCmd.Parameters.Append oCmd.CreateParameter("password", 203, 1, 12, "2" )
oCmd.Parameters.Append oCmd.CreateParameter("Affiliate", 3, 1, 3, 1)
oCmd.Parameters.Append oCmd.CreateParameter("@index1", 3, 2)
Set rs = oCmd.Execute
response.write oCmd.Parameters("@index1").Value &"<br>"
Set oCmd = Nothing
如果我在 SQL Server 终端中运行 SP,它可以工作,但是当我使用 asp 代码时,如果它是“新用户”,我不会得到任何返回“index1”的值
我能做什么?
【问题讨论】:
-
也许您已经在表格中使用了该电子邮件,请检查这一点,因为当这是真的时,您的 SP 不会返回/执行任何操作
-
我不会说 ASP,但通常我认为您需要创建一个带有特殊标志的参数,意思是“这是 SP 返回值参数”。不确定名称,但是当我在 Delphi 中使用 ADO 时,它总是命名为
@RETURN_VALUE。有 ASP 背景的人当然应该在这方面提供更多帮助。
标签: sql sql-server stored-procedures asp-classic