Razor에서 간단하게 저장 프로시져를 실행할 때의 방법입니다.

 

1. 기본 프로시져

 

1-1. 프로시져 생성

Create Procedure [dbo].[sp1]

As

Update Member Set mName = 'Test' Where mId = 1;

 

1-2. Razor에서 호출

@{

    Database db = Database.Open("DBConnectionString");

    int retVal = db.Execute("Exec sp1");

}

<!DOCTYPE html>

 

<html lang="en">

    <head>

        <meta charset="utf-8" />

        <title></title>

    </head>

    <body>

        @retVal

    </body>

</html>

 

여기서 retVal 값은 실제 적용된 행의 갯수가 반환됩니다. (프로시져 안에서 Set NoCount를 ON으로 설정 안 했을 경우)

 

 

2. Retrun값(int형)을 받을 경우

 

2-1. 프로시져 생성

Create Procedure [dbo].[sp2]

As

Declare @total int;

Select @total=Count(*) From Member;

Return @total;

 

2-2. Razor에서 호출

@{

    Database db = Database.Open("DBConnectionString");

    string strSql = "";

    strSql += "Declare @total int;";

    strSql += "Exec @total = sp2;";

    strSql += "Select @total;";

    var retVal = db.QueryValue(strSql);

}

<!DOCTYPE html>

 

<html lang="en">

    <head>

        <meta charset="utf-8" />

        <title></title>

    </head>

    <body>

        @retVal

    </body>

</html>

 

3. Output 파라메타 추가

 

3-1. 프로시져 생성

Create Procedure [dbo].[sp3]

  @arg1 int output,

  @arg2 varchar(10) output

As

Declare @total int;

Select @arg1 = 1, @arg2 = 'OK';

Select @total=Count(*) From Member;

Return @total;

 

3-2. Razor에서 호출

@{

    Database db = Database.Open("DBConnectionString");

    string strSql = "";

    strSql += "Declare @total int;";

    strSql += "Declare @arg1 int;";

    strSql += "Declare @arg2 varchar(10);";

    strSql += "Exec @total = sp3 @arg1 output, @arg2 output;";

    strSql += "Select @total, @arg1, @arg2;";

    var retVals = db.Query(strSql);

}

<!DOCTYPE html>

 

<html lang="en">

    <head>

        <meta charset="utf-8" />

        <title></title>

    </head>

    <body>

        @foreach (var retVal in retVals)

        {

            <div>@retVal[0]</div>

            <div>@retVal[1]</div>

            <div>@retVal[2]</div>

        }

    </body>

</html>

 

 

정리...

1. 보시다시피 단지 QA에서 실행 가능한 코드를 작성하여 호출한 것입니다. 다들 잘 아시겠지만 요청이 들어와서 정리해 보았습니다.

2. 위와 같은 방법이 사용은 가능하나 유지보수 측면에서는 좋지 않다고 저 역시 생각됩니다(SqlCommand를 사용하시는 편이 훨씬 효율적입니다. 성능적인 측면은 측정을 안 해봐서 잘 모르겠습니다...-_-;). 정말 간단하게 사용할 경우에만 사용하시는게 좋다고 생각됩니다.

3. Input 파라미터는 단지 추가만 해주면 되므로 굳이 넣지 않았습니다.

 

 

 





profile

도움받고~ 도움주고~ 살기좋은 세상을 만들어 보아요~!