嗨,我正在使用vs 2008在vb.net中做一個winforms應用程序。我有一個數據庫與單個表,它有兩列,在它和一個存儲過程。存儲過程應該接受一個輸入值,將該值與表中的一列進行匹配,然後從另一列返回相應的值;除了它doesnt.It返回1或0,請誰能告訴我,爲什麼存儲過程的返回值
ALTER PROCEDURE dbo.getgamenumber(@outputnumber bigint OUTPUT,
@inputnumber bigint)
AS
SELECT @outputnumber = ggnumber
FROM statstable
WHERE gindex = @inputnumber
RETURN @outputnumber
和存儲過程中因此被稱爲
With cmdgetgame
.CommandType = CommandType.StoredProcedure
.CommandText = "getgamenumber"
.Parameters.Add("@outputnumber", SqlDbType.BigInt).Value = outputnumber
.Parameters("@outputnumber").Direction = ParameterDirection.Output
.Parameters.AddWithValue("@inputnumber", inputvalue)
returnvalue = cmd.ExecuteScalar()
End With
感謝所有和任何幫助。
遺憾的困惑我的VB代碼現在看起來像這樣
With cmdgetgame
.CommandType = CommandType.StoredProcedure
.CommandText = "getgamenumber"
.Parameters.Add("@outputnumber", SqlDbType.BigInt).Value = outputnumber
.Parameters("@outputnumber").Direction = ParameterDirection.Output
.Parameters.AddWithValue("@inputnumber", inputvalue)
cmd.ExecuteNonQuery()
returnvalue = cmdgetgame.Parameters("@outputnumber").Value
End With
和我的存儲過程是這樣
ALTER PROCEDURE dbo.getgamenumber
(@outputnumber bigint ,
@inputnumber bigint)
AS
SELECT ggnumber
FROM statstable
WHERE (gindex = @inputnumber)
,但我還是沒有得到我所期望的價值。
如果你知道你想返回一個值,爲什麼不使用標量函數呢? – 2010-10-11 15:48:38
你有沒有試過直接在SQL服務器上運行sp? – DForck42 2010-10-11 21:02:31