簡體   English   中英

存儲過程什么也不返回

[英]Stored Procedure returns nothing

就我而言,這可能是一個簡單的失敗,但我只是不知道在哪里或如何做。 我一直在編碼Windows服務,該服務正在做很多事情。 其中之一是通過存儲過程從MS Sql 2005數據庫插入數據並從中獲取數據。

下面的代碼是Windows服務的一部分,現在也是Windows窗體的一部分,兩者都產生相同的空結果。

    try
        {
            SqlCommand cmd = new SqlCommand("U_RfId_ProductNumberGet", connectionRFID);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            //SqlParameter paramProd = new SqlParameter();
            SqlParameter paramOut = new SqlParameter();
            paramOut.ParameterName = "@ProductInformation";
            paramOut.Direction = System.Data.ParameterDirection.Output;
            paramOut.SqlDbType = System.Data.SqlDbType.VarChar;
            paramOut.Size = 50;
            cmd.Parameters.Add(paramOut);
            cmd.Parameters.AddWithValue("@ProductNumber", content); //content = "1" for testing
            connectionRFID.Open();

            textBox1.Text = (String)paramOut.Value;

            //cmd.Parameters["@ProductInformation"].Value.ToString();
            connectionRFID.Close();
        }
        catch (Exception ex)
        { textBox1.Text = ex.Message;
        connectionRFID.Close();
        }

然后是代碼正在調用的SP。 我嘗試將其更改為僅返回結果集而不是標量輸出參數,然后調用SP即可,但是我更喜歡使用標量值。

CREATE PROCEDURE U_RfId_ProductNumberGet
@ProductInformation     varchar(50) OUTPUT,
@ProductNumber          varchar(8)

AS
BEGIN TRAN
SET NOCOUNT ON;
BEGIN
SELECT @ProductInformation
                = CAST(vareNummer AS varchar(10)) 
                + '-' + CAST(vareTekst AS varchar(30))
FROM VareNummerVareTekst
WHERE ProductNumber = @ProductNumber
END
COMMIT TRAN

附帶說明:如果通過SQL Management Studio執行SP,則會得到有效結果。

有人注意到我忘記了什么嗎?

您忘記了執行命令。

cmd.Execute(); // to get a resultset

要么

cmd.ExecuteNonQuery(); // to get output parameters but no resultset 

應該根據您是否想要結果集來執行此操作。

您必須在命令對象上使用ExecuteNonQuery。 SqlCommand Executenonquery

    connectionRFID.Open();
    cmd.ExecuteNonQuery(); // this missing from your code 
   textBox1.Text = (String)paramOut.Value;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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