Classic ASP MSSQL 저장 프로시저 호출(실행) 방법 및 사용 예제

Classic ASP MSSQL 저장 프로시저 호출(실행) 방법 및 사용 예제

Classic ASP 프로그래밍 개발 시 MS SQL에서 작성한 저장 프로시저를 호출하여 사용하는 경우가 많이 발생합니다. 그럼 예제를 통해서 MS SQL 저장 프로시저를 호출하여 사용하는 방법에 대해서 알아보죠.

포스트 기준

– Classic ASP 3.0

– Microsoft SQL Server 2019

1. 저장/수정/삭제/배치 저장 프로시저 호출하여 사용하는 예제

1. 샘플 저장 프로시저 (저장/수정/삭제/배치)

/* 학번, 성명, 과, 학년을 받아 학생정보에 저장 */
CREATE PROC USP_BS_DEMO_1 (
   @P_ID	NVARCHAR(50),        -- 학번
   @NAME	NVARCHAR(50),        -- 성명
   @DEPART	NVARCHAR(50),        -- 과
   @GRADE	SMALLINT,            -- 학년
   @RETURN	SMALLINT	OUTPUT   -- OUTPUT 변수 : '1'이면 정상 처리 
) 
AS
     
SET NOCOUNT ON   -- 영향을 받은 행 수를 나타내는 메시지 출력하지 않음
     
/* TRY...CATCH 구문을 사용 : 반드시 사용할 필요는 없고 필요시 사용 */
BEGIN TRY
        
   BEGIN TRANSACTION
        
   INSERT INTO BS_DEMO_8_1 (P_ID, NAME, DEPART, GRADE) 
   VALUES (@P_ID, @NAME, @DEPART, @GRADE)
     
   COMMIT
        
   SET @RETURN = 0  -- 정상인 경우 1을 넘겨 줌
     
END TRY
     
     
BEGIN CATCH
     
   IF @@TRANCOUNT > 0
      ROLLBACK
     
   SET @RETURN = -1   -- 비정상인 경우는 -1을 넘겨 줌
        
END CATCH
     
GO


2. 저장 프로시저 호출 Classic ASP

▶ Adovbs.inc 파일에 상수가 정의되어 있습니다. (예: adCmdStoredProc → 4)

▶ Adovbs.inc 파일은 ASP를 설치하면 생성됩니다. (예: C:Program FilesCommon FilesSystemado 폴더)

<%@ LANGUAGE = VBScript %>
<!-- #include virtual="/asp/inc/adovbs.inc" -->

<%
   Dim Db, Cmd
   Dim strPId, strName, strDepart, intGrade 
   Dim intReturn

   strPId = "1004"             ' 학번
   strName = "홍길동4"         ' 성명
   strDepart = "컴퓨터공학과"   ' 과
   intGrade = 1                ' 학년

   ' Database 연동 (ODBC)
   Set Db = Server.CreateObject("ADODB.Connection")
   Db.Open ("DSN=BlueShare; UID=BlueShare; PWD=xxxxxxx")

   ' Command 개체 생성
   Set Cmd = Server.CreateObject("ADODB.Command")

   With Cmd
      .ActiveConnection = Db
      .Commandtext = "USP_BS_DEMO_1"   ' 저장 프로시저
      .CommandType = adCmdStoredProc   ' 실행 종류 (adCmdStoredProc 상수값: 4 => adovbs.inc 파일에 정의)
      .Parameters.Append .CreateParameter("@IN_P_ID", advarwchar, adParamInput, 50)
      .Parameters.Append .CreateParameter("@IN_NAME", advarwchar, adParamInput, 50)
      .Parameters.Append .CreateParameter("@IN_DEPART", advarwchar, adParamInput, 50)
      .Parameters.Append .CreateParameter("@IN_GRADE", adSmallInt, adParamInput, 1)
      .Parameters.Append .CreateParameter("@RETURN", adSmallInt, adParamOutput, 2)   

      .Parameters("@IN_P_ID") = strPId
      .Parameters("@IN_NAME") = strName
      .Parameters("@IN_DEPART") = strDepart
      .Parameters("@IN_GRADE") = intGrade
      .Parameters("@RETURN") = 0

      .Execute, , adExecuteNoRecords   ' 저장 프로시저 실행

      intReturn = .Parameters("@RETURN")

   End with

   ' 결과값에 따른 처리
   If intReturn = 0 Then
      Response.write "okkk"
      Response.Write "<script>alert('정상으로 처리 되었습니다.')</script>"
   Else
      Response.Write "<script>alert('저장시 오류가 발생했습니다.')</script>"
   End if

   Set Cmd = Nothing

   Db.Close
   Set Db = Nothing
%>


3. 실행 결과 화면

저장 프로시저 호출 Classic ASP 실행 결과 화면

2. 조회용 저장 프로시저 호출하여 사용하는 예제

1. 샘플 저장 프로시저 (조회용)

/* 학번을 받아 학생정보 조회 */
CREATE PROC USP_BS_DEMO_2 (@IN_P_ID NVARCHAR(5))
AS
BEGIN
     
   /* 테이블 변수 선언 */
   DECLARE @TEMP TABLE (
      P_ID        NVARCHAR(50),
      NAME        NVARCHAR(50),
      DEPART      NVARCHAR(50),
      GRADE       SMALLINT,
      S_ID        NVARCHAR(50),
      SUBJECT     NVARCHAR(50),
      SCORE       SMALLINT
   )
     
   -- 테이블 변수에 저장 작업
   INSERT INTO @TEMP
   SELECT A.P_ID,      -- 학번
          B.NAME,      -- 성명
          B.DEPART,    -- 학과
          B.GRADE,     -- 학년
          A.S_ID,      -- 과목코드
          C.SUBJECT,   -- 과목
          A.SCORE      -- 점수
     FROM BS_DEMO_8_3 A
          INNER JOIN BS_DEMO_8_1 B ON A.P_ID = B.P_ID
          INNER JOIN BS_DEMO_8_2 C ON A.S_ID = C.S_ID
    WHERE A.P_ID = @IN_P_ID   -- 학번 받은 변수
     
-- 해당되는 데이터 조회
SELECT * FROM @TEMP
     
END


2. 저장 프로시저 호출 Classic ASP

<%@ LANGUAGE = VBScript %>
<!-- #include virtual="/asp/inc/adovbs.inc" -->

<%
   Dim Db, Cmd
   Dim strPId, IntOutAvg

   strPId = "1003"   ' 받는변수

   ' Database 연동 (ODBC)
   Set Db = Server.CreateObject("ADODB.Connection")
   Db.Open ("DSN=BlueShare; UID=BlueShare; PWD=xxxxxx")

   ' Command 개체 생성
   Set Cmd = Server.CreateObject("ADODB.Command")

   With Cmd
      .ActiveConnection = Db
      .Commandtext = "USP_BS_DEMO_2"   ' 저장 프로시저
      .CommandType = adCmdStoredProc   ' 실행 종류 (adCmdStoredProc 상수값: 4 => adovbs.inc 파일에 정의)
      .Parameters.Append .CreateParameter("@IN_P_ID", advarwchar, adParamInput, 50)

      .Parameters("@IN_P_ID") = strPId

      Set Rs = .Execute()

   End with

   Response.Write "학번(" & strPId & ")의 점수 </br></br>"
   
   ' 하나씩 행 처리
   Do While Not Rs.EOF

      Response.write "과목: " & Rs(5) & ", 점수: " & Rs(6) & "점 </br>"

      Rs.MoveNext
   Loop 

   Set Cmd = Nothing

   Db.Close
   Set Db = Nothing
%>


3. 실행 결과 화면

조회용 저장 프로시저 호출하여 사용하는 예제 실행 결과  화면

함께 보면 좋은 게시글

위로 스크롤