C#/ADO.NET

저장 프로시져 실행

황기하 2021. 12. 27.
Stored Procedure 실행

SQL 서버의 저장된 프로시져(Stored Procedure)는
일련의 SQL문들은 묶어 하나의 실행단위로 만들어 놓은 것으로
이를 실행하기 위해서는 SqlCommand를 이용하면 된다.
즉, SqlCommand 클래스 객체를 생성한 후,
Stored Procedure 호출 문장을 CommandText 속성에 지정하고
ExecuteNonQuery() 메소드를 실행하면,
SQL 서버에서 해당 Stored Procedure가 실행된다.
이때 SqlCommand 객체의 CommandType을 Text로 지정할 수도 있으나,
StoredProcedure 타입으로 지정하면(권장사항) 보다 많은 Stored Procedure 기능을 사용할 수 있다.
아래는 간단한 Stored Procedure문을 CommandType.Text 타입으로 실행한 예이다.
 
// 가정 - 
// Stored Procedure 'sp_Run'은 2개의 입력 파리미터를 
// 받아들이고, Resultset을 리턴할 경우.
//
using (SqlConnection conn = new SqlConnection(strConn))
{
    conn.Open();

    //CommandType.Text 타입으로 직접 SP를 실행    
    SqlCommand cmd = new SqlCommand("sp_Run 1,'G'", conn);
    //cmd.CommandType = CommandType.Text;

    SqlDataReader rdr = cmd.ExecuteReader();

    while (rdr.Read())
    {
        Console.WriteLine(rdr[0]);
    }
}

 

 

CommandType.StoredProcedure로 SP 실행

일반적으로 Stored Procedure를 실행할 때는
SqlCommand 객체의 CommandType 속성을 StoredProcedure으로 설정하고,
CommandText 속성에 파라미터 없이 Stored Procedure명만을 기입한다.
이는 Stored Procedure안에 공란(Blank)가 있는 경우에도 아무 문제 없이 SP명을 인식할 수 있게 한다.
Stored Procedure는 입력 파라미터뿐만 아니라 출력 파라미터도 가질 수 있으므로
SqlParameter 객체에 ParameterDirection을 지정하여 입출력을 구분해 준다.
아래는 하나의 입력 파라미터와 하나의 출력 파라미터를 받아들이는
Stored Procedure를 실행하는 예이다.

 

// 가정 - 
// Stored Procedure 'sp_Sum'은 1개의 입력 파리미터를
// 받아 들여 합계를 출력파라미터로 리턴한다.
//
public void RunSP()
{
    string strConn = "Data Source=(local);Initial Catalog=TestDB;Integrated Security=SSPI;";

    using (SqlConnection conn = new SqlConnection(strConn))
    {
        conn.Open();

        // SP명만 사용
        SqlCommand cmd = new SqlCommand("sp_Sum", conn);

        // CommandType.StoredProcedure 지정
        cmd.CommandType = CommandType.StoredProcedure;

        // 입력 파라미터
        SqlParameter p1 = new SqlParameter("@class", SqlDbType.Int);
        p1.Value = 10;
        cmd.Parameters.Add(p1);

        // 출력 파라미터
        SqlParameter p2 = new SqlParameter("@sum", SqlDbType.Int);
        p2.Direction = ParameterDirection.Output;
        cmd.Parameters.Add(p2);

        // SP 실행
        cmd.ExecuteNonQuery();

        // 출력 파리미터 값 사용
        Console.WriteLine("Sum={0}", p2.Value);
    }
}

 

[출처]  http://www.sqlprogram.com/AdoNet/adonet-callsp.aspx

 

Stored Proc 실행 - SQL 프로그래밍 배우기 (Learn SQL Programming)

Stored Procedure 실행 SQL 서버의 저장된 프로시져(Stored Procedure)는 일련의 SQL문들은 묶어 하나의 실행단위로 만들어 놓은 것으로 이를 실행하기 위해서는 SqlCommand를 이용하면 된다. 즉, SqlCommand 클래

www.sqlprogram.com

 

'C# > ADO.NET' 카테고리의 다른 글

ADO.NET In-Memory DataSet 클래스  (0) 2021.12.27
ADO.NET 비연결 데이타읽기  (0) 2021.12.27
SQL 데이타 삭제  (0) 2021.12.27
SQL 데이타 갱신  (0) 2021.12.27
ADO.NET 데이타 추가  (0) 2021.12.27

댓글