C \ # 저장 프로시저 호출 OUTPUT 매개 변수 와 Return 반환 값

5050 단어 return
본문 전재: http://www.cnblogs.com/libingql/archive/2010/05/02/1726104.html
저장 프로 세 스 는 데이터베이스 서버 에 저 장 된 사전 컴 파일 된 sql 구문 입 니 다.저장 프로 세 스 를 사용 하면 데이터베이스 에 강력 한 기능 을 가 진 작업 을 직접 저장 하고 실행 할 수 있 습 니 다.저장 과정 은 첫 번 째 프로그램 이 실 행 될 때 문법 검사 와 컴 파일 을 하고 컴 파일 된 버 전 은 캐 시 에 저 장 됩 니 다.중복 작업 을 수행 할 때 저장 과정 은 성능 과 일치 성 을 높 일 수 있다.저장 과정 은 일련의 데이터 베 이 스 를 데이터베이스 서버 에 놓 고 실행 할 수 있 기 때문에 웹 서버 의 부 하 를 낮 추고 전체 시스템 의 성능 을 향상 시 킬 수 있다.
 
1. 저장 프로시저 생 성
CREATE PROC [DBO].[GetOrdersByOrderDate]

    @OrderDate DATETIME

AS

    SELECT

        [OrderID],[CustomerID],[OrderDate]

    FROM

        [Orders]

    WHERE

        [OrderDate] >= @OrderDate





USE Northwind

GO

EXEC GetByOrderDate '1996-10-10 0:00:00'


  
 
2. 저장 프로시저 호출
 
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);



            try

            {

                SqlCommand cmd = new SqlCommand();

                cmd.CommandText = "[GetOrdersByOrderDate]";

                cmd.Connection = conn;



                cmd.CommandType = CommandType.StoredProcedure;



                cmd.Parameters.Add("@OrderDate", SqlDbType.DateTime, 8).Value = "1998-5-5";



                conn.Open();



                SqlDataAdapter da = new SqlDataAdapter();

                da.SelectCommand = cmd;



                DataSet ds = new DataSet();



                da.Fill(ds);



                gvOrders.DataSource = ds;

                gvOrders.DataBind();

            }

            catch (SqlException ex)

            {

                throw new Exception(ex.Message, ex);

            }

            finally

            {

                conn.Close();

            }

        }


  
 
3. 출력 매개 변수
저장 프로 세 스 는 출력 매개 변 수 를 통 해 값 을 되 돌려 줄 수 있 습 니 다.
 
CREATE PROC [DBO].[GetOrderDetailsTotalByProductID]

    @ProductID INT,

    @Total MONEY OUTPUT

AS

    SELECT @Total = SUM([UnitPrice]*[Quantity])

    FROM

        [Order Details]

    WHERE

        [ProductID] = @ProductID


 
SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);



            try

            {

                SqlCommand cmd = new SqlCommand();

                cmd.CommandText = "[GetOrderDetailsTotalByProductID]";

                cmd.Connection = conn;



                cmd.CommandType = CommandType.StoredProcedure;



                cmd.Parameters.Add("@ProductID", SqlDbType.Int, 4).Value = 21;

                cmd.Parameters.Add("@Total", SqlDbType.Money).Direction = ParameterDirection.Output;



                conn.Open();

                cmd.ExecuteNonQuery();



                lblTotal.Text = cmd.Parameters["@Total"].Value.ToString();

            }

            catch (SqlException ex)

            {

                throw new Exception(ex.Message, ex);

            }

            finally

            {

                conn.Close();

            }


  
  
 
4、Return 반환 값
반환 값 을 사용 하여 저장 과정의 실행 상 태 를 표시 합 니 다. 출력 매개 변수 와 유사 합 니 다. 차이 점:
(1), 반환 값 은 sql 정수 만 되 돌려 줍 니 다.
(2) 반환 값 은 저장 과정 내부 에서 설명 할 수 없고 Transcat - SQL 의 RETURN 문 구 를 사용 하여 되 돌려 줍 니 다.
 
 
CREATE PROC [DBO].[GetOrdersByCustomerID]

    @CustomerID INT,

    @OrderDate DATETIME OUTPUT

AS

    SELECT @OrderDate = MAX([OrderDate])

    FROM

        [Orders]

    WHERE

        [CustomerID] = @CustomerID



    IF @OrderDate IS NULL

        RETURN 0

    ELSE

        RETURN 1


 
SqlConnection(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString);



            try

            {

                SqlCommand cmd = new SqlCommand();

                cmd.CommandText = "[GetOrdersByEmployeeID]";

                cmd.Connection = conn;



                cmd.CommandType = CommandType.StoredProcedure;



                cmd.Parameters.Add("@ReturnValue", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;

                cmd.Parameters.Add("@EmployeeID", SqlDbType.Int, 4).Value = 1;

                cmd.Parameters.Add("@OrderDate", SqlDbType.DateTime).Direction = ParameterDirection.Output;



                conn.Open();

                cmd.ExecuteNonQuery();



                lblReturnValue.Text = cmd.Parameters["@ReturnValue"].Value.ToString();

                lblOrderDate.Text = cmd.Parameters["@OrderDate"].Value.ToString();

            }

            catch (SqlException ex)

            {

                throw new Exception(ex.Message, ex);

            }

            finally

            {

                conn.Close();

            }


  
 

좋은 웹페이지 즐겨찾기