[英]Failed to get result of stored procedure
我創建了一個根據輸入文本返回問題ID的過程
ALTER PROCEDURE [dbo].[GetQuestionIDbyTekst]
(
@Tekst nvarchar(100)
)
AS
DECLARE @QuestionID int
SELECT QuestionID
FROM dbo.Questions
WHERE Tekst = @Tekst
RETURN @QuestionID
我在獲取QuestionID
的值時遇到QuestionID
:
public static int getQuestionID(Question p)
{
using (Entities dm = new Entities())
{
return dm.GetQuestionIDbyTekst(p.Tekst);
}
}
將@QuestionID
為Output
參數。 另外,您需要將結果分配給@QuestionID
ALTER PROCEDURE [dbo].[GetQuestionIDbyTekst]
(
@Tekst nvarchar(100),
@QuestionID INT OUTPUT
)
AS
BEGIN
DECLARE @QuestionID int
SELECT @QuestionID = QuestionID FROM dbo.Questions WHERE Tekst = @Tekst
END
請嘗試以下操作:
ALTER PROCEDURE [dbo].[GetQuestionIDbyTekst]
(
@Tekst nvarchar(100)
)
AS
-- DECLARE @QuestionID int
SELECT QuestionID
FROM dbo.Questions
WHERE Tekst = @Tekst
-- RETURN @QuestionID
您可以使用存儲過程的變體。
如果您使用ADO.NET並希望獲得返回值,請嘗試以下操作:
SqlConnection con = new SqlConnection(@"Data Source=localhost\***;Initial Catalog=***;Integrated Security=True;Persist Security Info=False;");
con.Open();
SqlCommand cmd = new SqlCommand("GetQuestionIDbyTekst", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add("@Tekst", System.Data.SqlDbType.NVarChar).Value = "eee";
SqlParameter returnPar = new SqlParameter();
returnPar.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(retturnPar);
cmd.ExecuteScalar();
var result = returnPar.Value;
如果使用實體框架,則可以使用以下變體:
public static int GetQuestionIDbyTekst(string question)
{
using (var context = new EfDbContext())
{
var test = new SqlParameter("@Tekst", question);
var resultParam = new SqlParameter("@result", SqlDbType.Int);
resultParam.Direction = ParameterDirection.Output;
context.Database.ExecuteSqlCommand("exec @result = [dbo].[testProc] @Tekst", resultParam, test);
return (int)resultParam.Value;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.