我試圖用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