簡體   English   中英

無法獲得存儲過程的結果

[英]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);          
       }
 }

@QuestionIDOutput參數。 另外,您需要將結果分配給@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM