none
執行Stored Procedure - Data.CommandType.Text和Data.CommandType.StoredProcedure 差別 RRS feed

  • 問題

  •  

    請問一下:

    假如用.NET去執行Stored Procedure的話

    SqlCommand.CommandType = Data.CommandType.Text和

    SqlCommand.CommandType = Data.CommandType.StoredProcedure的差別在哪

     

    因為我用兩種寫都可以正確執行無誤

    如下:

     

    Stored Procedure:

    =============================================

    Create Procedure Proc1

    @input1 NVARCHAR(30)

    AS

    BEGIN

    INSERT INTO Table1 (col1) VALUES (@input1)

    END

     

     

    .NET程式寫法1:

    ============================================

    aSqlCommand.CommandType = Data.CommandType.Text

    CmdStr = "EXEC Proc1 'Test' "

    aSqlCommand.CommandText = CmdStr

    aSqlCommand.ExecuteNonQuery

    '可正確完成insert

     

    .NET程式寫法2:

    ============================================

    aSqlCommand.CommandType = Data.CommandType.StoredProcedure

    CmdStr = "Proc1"

    aSqlCommand.CommandText = CmdStr

    aSqlCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@input1", 'test'))

    aSqlCommand.ExecuteNonQuery

    '可正確完成insert

     

    有看到這篇

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=474727&SiteID=1

    好像只是轉成中介語言後

    stack內某個值不同而已

    實際上不會有其他差別????

     

    又如果沒其他差異的話~那為什麼要分成兩種都可以的寫法???

    2008年2月13日 上午 05:43

解答

  • 為什麼?習慣而已吧。

     

    因為很少人會用 "EXEC proc 'test'" 來執行 stored procedure,除非他自己就是 DBA,或者是 Database Designer,否則一般的 Programmer 都只會用 CommandType.StoredProcedure 傳 stored procedure 的名稱,再給定參數讓它執行。

     

    等你寫多點程式就會知道 "習慣" 也是很重要的。

     

    2008年2月13日 上午 05:53
    版主