ストレージ・プロシージャとSQL文の比較およびストレージ・プロシージャのC#での呼び出し方法

5482 ワード

  SQL     .NET   ,           ,             ,          ,         ,   ,        ,            ,       。

         ,      :

--------

     SQL        

    :      SQL  ,      。

         ,   SQL    ,    SQL  ,         ,         ,         ,    ,           ,       。  SQL   Nhibernate     ORM  ,          ,              ,      ,      。

          ,          ,    ,                   。          SQL              ,          String   SQL  ,       。

SQL           ,      ,               。Java       SQL    ,              。

           ,        ,          ,       Web       Web   ,               ,      ,      ,             ,      Web     ,          ,               ,               , Web          ,                  ,      ,      ,   Web                。

          ,          ,                   ,         ,          ,   Web          ,                     。     ,                      ,      CUID       ORM   。



              。

1)     ,      sql  

2)     ,      SQL  

3)      ,     SQL   

             ,             

    

               ,     SQL                ;   

    

   ,    ,                ,               ,        ;   

    

       :           ,        ;                ,                    ,       ,                       ,      。



C#              

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



             

          ,       .NET        “  ”  。  ,             SqlServer    ,      ,        。         C#  。



  

            ,       :           SqlConnection,           SqlCommand,     SQL       。        ,                       。      ,                 : 

using System.Data.SqlClient。



           ,             ,        DataAdapter        DataSet ,                       ;                ,       ,                      。



(1)                  :



SqlConnection conn=new SqlConnection(“connectionString”);

SqlDataAdapter da = new SqlDataAdapter();

da.SelectCommand = new SqlCommand();

da.SelectCommand.Connection = conn;

da.SelectCommand.CommandText = "NameOfProcedure";

da.SelectCommand.CommandType = CommandType.StoredProcedure;

                   ,         。



  (2)                 (                 ExeProcedure(string inputdate)):



SqlConnection conn=new SqlConnection(“connectionString”);

SqlDataAdapter da = new SqlDataAdapter();

da.SelectCommand = new SqlCommand();

da.SelectCommand.Connection = conn;

da.SelectCommand.CommandText = "NameOfProcedure";

da.SelectCommand.CommandType = CommandType.StoredProcedure;

(      ,         )

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);

param.Direction = ParameterDirection.Input;

param.Value = Convert.ToDateTime(inputdate);

da.SelectCommand.Parameters.Add(param);

              。         :



param = new SqlParameter("@ParameterName", SqlDbType.DateTime);

param.Direction = ParameterDirection.Output;

param.Value = Convert.ToDateTime(inputdate);

da.SelectCommand.Parameters.Add(param);

              :



param = new SqlParameter("@ParameterName", SqlDbType.DateTime);

param.Direction = ParameterDirection.ReturnValue;

param.Value = Convert.ToDateTime(inputdate);

da.SelectCommand.Parameters.Add(param);

              ,                     ,              ;     ,       ,                              。  ,                   ?                                         ,   SqlServer                   “     (    )”              ,  ,                  ?



               。                          。      :



SqlConnection conn=new SqlConnection(“connectionString”);

SqlDataAdapter da = new SqlDataAdapter();

da.SelectCommand = new SqlCommand();

da.SelectCommand.Connection = conn;

da.SelectCommand.CommandText = "NameOfProcedure(’para1’,’para2’,para3)";

da.SelectCommand.CommandType = CommandType.StoredProcedure;

             ,                         ,        。      ,           !



SQL Server 2005                      

RETURN          、        。          RETURN            。



          RETURN    ,                、          。   RETURN     ,        0。



                            。               0。            。  :



USE AdventureWorks;

GO

-- Create a procedure that takes one input parameter

-- and returns one output parameter and a return code.

CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,

    @MaxTotal INT OUTPUT

AS

-- Declare and initialize a variable to hold @@ERROR.

DECLARE @ErrorSave int;

SET @ErrorSave = 0;

-- Do a SELECT using the input parameter.

SELECT c.FirstName, c.LastName, e.Title

FROM HumanResources.Employee AS e

JOIN Person.Contact AS c ON e.ContactID = c.ContactID

WHERE EmployeeID = @EmployeeIDParm;

-- Save any nonzero @@ERROR value.

IF (@@ERROR <> 0)

    SET @ErrorSave = @@ERROR;

-- Set a value in the output parameter.

SELECT @MaxTotal = MAX(TotalDue)

FROM Sales.SalesOrderHeader;

IF (@@ERROR <> 0)

    SET @ErrorSave = @@ERROR;

-- Returns 0 if neither SELECT statement had

-- an error, otherwise returns the last error.

RETURN @ErrorSave;

GO



        Transact-SQL                        :



DECLARE @ReturnStatus int;

DECLARE @MaxTotalVariable int;

DECLARE @MaxTotal int;

EXECUTE @ReturnStatus = SampleProcedure @EmployeeIDParm = 65 ,@MaxTotal = @MaxTotalVariable OUTPUT;

PRINT ' ';

PRINT 'Return code = ' + CAST(@ReturnStatus AS CHAR(10));

PRINT 'Maximum Order Total = ' + CAST(@MaxTotalVariable AS CHAR(15));

GO



                                 。