我试图用ASP与SQL Server存储过程:在存储过程中的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运行SP服务器终端它的工作,但是当我使用asp代码,如果它是一个“新用户”,我没有得到任何值返回“index1”
我该怎么办?
也许你已经在表中使用该电子邮件了,请检查一下,因为你的SP不返回/做任何事情时,这是真的 – 2011-02-12 19:00:10
我不会说ASP,但通常我认为你需要创建一个参数与一个特殊的标志,意思是“这是SP返回值参数”。不知道名称,但是当我在Delphi中使用ADO时,它总是被命名为“@ RETURN_VALUE”。有ASP背景的人当然应该帮助更多的人。 – 2011-02-12 19:06:27