login register Sysop! about ME  

2018년 10월 29일 14시 02분 00초,     조회수 : 137
  제목 : 오라클 프로시저(Procedure) 반복 호출 문의 드립니다.
SEQ : 164097 글쓴이 : libra105

작성 포맷 : TEXT 모드, 자동 줄바꿈 사용

안녕하세요.
asp를 잘 모르는 개발자입니다. ㅡㅡ'

운영중인  asp 시스템에
sp 호출하는 샘플을 만들어야 하는 상황이 이라...
구글링 하여 어떻게 어떻게.. 샘플을 만들었는데..
do while 문에서 중복호출하니 오류가 발생합니다.
가르침 부탁드립니다.

소스에서 트랜잭션등 고려해야할 사항이 있으면 가르침 부탁드려요.

레코드가 3건을 do while문으로 호출시
1번째 레코드에서 sp 실행은 정상입니다.
2번째 레코드에서 sp 실행실 오류가 발생합니다.

오류 메세지
ORA-06550: 줄 1, 열7:PLS-00306: 'SP_TEST' 호출 시 인수의 갯수나 유형이 잘못되었습니다 ORA-06550: 줄 1, 열7:PL/SQL: Statement ignored

/test/pmc/spcalltest.asp, 
7:PL/SQL: Statement ignored

/test/pmc/spcalltest.asp, 줄 140
 --> 에러 발생 위치 :   .Execute , , adExecuteNoRecords 입니다.



' DB Connect 선언
Dim dbCon, dbCon_sp
Set dbCon = Server.createObject("ADODB.Connection")         '
    dbCon.open Application("objconn_test_ora")              'global.asa 설정
    dbCon.BeginTrans

Set dbCon_sp = Server.createObject("ADODB.Command")         '


'On Error Resume Next
'-------------------------------------------------------------------------------
' 처리
'-------------------------------------------------------------------------------
Dim strSqlOnline, rs, rsView, i, j, colCnt, seq, intErrNum
Dim intSpErrCd, strSpErrMsg
colCnt = 0
seq = 0
intErrNum = 0
intSpErrCd  = 1
strSpErrMsg = ""

strSqlOnline = "SELECT DRDL_NO FROM VI_TEST WHERE STS_CD IN ('CV02')"     

Set rsView = dbCon.Execute(strSqlOnline)


if rsView.eof or rsView.bof then                                                '불러온 값이 없을 경우
	   
	   response.write "<br><br>조회결과가 없습니다.<br><br>"
	   
Else
    rsView.MoveFirst
    seq=0

    do while rsView.eof = false                                                 ' 레코드셋에 값이 있으면 계속 반복
        v_DRDL_NO        = rsView("DRDL_NO")                          ' 번호
        v_REG_ID         = "test_id"                                            ' 등록자

        'Command객체 선언
        WITH dbCon_sp
            .ActiveConnection = dbCon
            .CommandText      = "SP_TEST"                                       '프로시저명
            .CommandType      = adCmdStoredProc                            ' 타입설정

            ' 프로시저 인수 설정 (인수명, 인수데이터타입, in/out 변수설정, 데이터크기, 값)
            '.Parameters.Refresh  ' 요건 주석 처리 했어요.
            .Parameters.Append .CreateParameter("@DRDL_NO"  , adVarChar, adParamInput , 14  )   ' 번호
            .Parameters.Append .CreateParameter("@REG_ID"   , adVarChar, adParamInput , 20  )   ' 등록자
            .Parameters.Append .CreateParameter("@ERR_CD"   , adInteger, adParamOutput, 0   )   ' 리턴코드
            .Parameters.Append .CreateParameter("@ERR_MSG"  , adVarChar, adParamOutput, 1000)   ' 리턴 메세지

지

            ' input 파라미터
            .Parameters("@DRDL_NO"      )  = rsView("DRDL_NO")                  ' 번호
            .Parameters("@REG_ID"       )  = "test_id"                          ' 등록자
            
            ' 실행
            .Execute , , adExecuteNoRecords

            ' output 파라미터 받기
            intSpErrCd  = .Parameters("@ERR_CD")                                ' 에러코드
            strSpErrMsg = .Parameters("@ERR_MSG")                               ' 에러명

            response.write "<br><br>SP OUT PARAMETER<BR> "
            response.write "intSpErrCd=" & intSpErrCd & "<br>"
            response.write "strSpErrMsg=" & Replace(strSpErrMsg, "\n", "<br>")
        END WITH

        rsView.moveNext
        seq = seq +1
        response.write "<br>seq=" & seq
    Loop

    intErrNum = Err.number
end if

rsView.close()    '레코드셋 해제
set rsView = nothing

if Err.number = 0 And intErrNum = 0 And intSpErrCd = 1 Then

    response.write "<br><br>호출 성공<br>"
    dbCon.CommitTrans
    'dbCon_sp.CommitTrans
    
Else

    response.write "<br><br>오류발생<br>"
    response.Write("<b>err.description :</B>"&err.Description&"<br>")
    response.Write("<b>err.number : </b>"&err.Number&"<br>")
    response.Write("<b>err.Source : </b>"&err.Source&"<br>")
    response.write "intSpErrCd=" & intSpErrCd & "<br>"
    response.write "strSpErrMsg=" & Replace(strSpErrMsg, "\n", "<br>")

    dbCon.RollbackTrans
    'dbCon_sp.RollbackTrans
    
End If

dbCon.close
Set dbCon = Nothing
'dbCon_sp.close
Set dbCon_sp = Nothing



제목 작성자 날짜 조회
오라클 프로시저(Procedure) 반복 호출 문의 드립니다. libra105 2018-10-29 137

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})