아래의 소스처럼 2개의 프로시저를 사용하여 데이터를 insert 하려고 합니다.
첫번째 프로시저 inset 하고 고유값을 리턴 받아서 두번째 프로시저에 첫번째 고유값을 포함한 데이터를 insert 하려고 합니
다.
2개의 테이블에 데이터는 들어가는데
두번째 .Execute , , adExecuteNoRecords에서 timeout 걸립니다.
lock이 걸리네요 ㅠㅠ
timeout 오류가 발생 후 insert 했던 데이터가 rollback 됩니다.
무엇때문인지 알수가 없네요
mssql insert 쿼리문을 만들어서 테스트 하면 테스트 하면 제대로 등록이 된다.
Set cmd = Server.CreateObject("ADODB.Command")
With cmd
.ActiveConnection = ConnStr
.ActiveConnection.BeginTrans
.Commandtext = "usp_CoordinatorPlanInsert"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("@cd_idx", adInteger, adParamInput, 10)
.Parameters.Append .CreateParameter("@cd_year", adVarChar, adParamInput, 4)
.Parameters.Append .CreateParameter("@cd_order", adUnsignedTinyInt, adParamInput, 10)
.Parameters.Append .CreateParameter("@cd_name", adVarChar, adParamInput, 20)
.Parameters.Append .CreateParameter("@cd_cname", adVarChar, adParamInput, 200)
.Parameters.Append .CreateParameter("@cd_dp_code", adVarChar, adParamInput, 6)
.Parameters.Append .CreateParameter("@cd_gubun", adChar, adParamInput, 1)
.Parameters.Append .CreateParameter("@mb_reg_id", adVarChar, adParamInput, 50)
.Parameters.Append .CreateParameter("@intResult", adInteger, adParamOutPut,0)
.Parameters.Append .CreateParameter("@intIdx", adInteger, adParamOutPut,0)
.Parameters("@cd_idx") = 0
.Parameters("@cd_year") = cd_year
.Parameters("@cd_order") = cd_order
.Parameters("@cd_name") = cd_name
.Parameters("@cd_cname") = cd_cname
.Parameters("@cd_dp_code") = cd_dp_code
.Parameters("@cd_gubun") = mode
.Parameters("@mb_reg_id") = mb_sess_id
'저장 프로시저 실행
.Execute , , adExecuteNoRecords
intResult = .Parameters("@intResult")
intIdx = .Parameters("@intIdx")
End With
If intResult = 1 Then
For i=1 To Request.Form("cdpl_date").count
If TRIM(Request.Form("cdpl_date")(i) & "") <> "" And TRIM(Request.Form("cdpl_cname")(i) & "") <> "" And
TRIM(Request.Form("cdpl_purpose")(i) & "") <> "" Then
Set cmd2 = Server.CreateObject("ADODB.Command")
With cmd2
.ActiveConnection = ConnStr
.ActiveConnection.BeginTrans
.Commandtext = "usp_CoordinatorPlanDetailInsert"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("@cdpl_idx", adInteger, adParamInput, 10)
.Parameters.Append .CreateParameter("@cdpl_cd_idx", adInteger, adParamInput, 10)
.Parameters.Append .CreateParameter("@cdpl_date", adDBTimeStamp, adParamInput, 10)
.Parameters.Append .CreateParameter("@cdpl_cname", adVarChar, adParamInput, 100)
.Parameters.Append .CreateParameter("@cdpl_cnumber", adVarChar, adParamInput, 20)
.Parameters.Append .CreateParameter("@cdpl_clocation", adVarChar, adParamInput, 200)
.Parameters.Append .CreateParameter("@cdpl_purpose", adVarChar, adParamInput, 6)
.Parameters.Append .CreateParameter("@cdpl_purpose_note", adVarChar, adParamInput, 200)
.Parameters.Append .CreateParameter("@cdpl_note", adVarChar, adParamInput, 200)
.Parameters.Append .CreateParameter("@mb_reg_id", adVarChar, adParamInput, 50)
.Parameters.Append .CreateParameter("@intResult", adInteger, adParamOutPut, 0)
.Parameters("@cdpl_idx") = 0
.Parameters("@cdpl_cd_idx") = intIdx
.Parameters("@cdpl_date") = StripHTML(TRIM(Request.Form("cdpl_date")(i)& ""))
.Parameters("@cdpl_cname") = StripHTML(TRIM(Request.Form("cdpl_cname")(i)& ""))
.Parameters("@cdpl_cnumber") = StripHTML(TRIM(Request.Form("cdpl_cnumber")(i)& ""))
.Parameters("@cdpl_clocation") = StripHTML(TRIM(Request.Form("cdpl_clocation")(i)& ""))
.Parameters("@cdpl_purpose") = TRIM(Request.Form("cdpl_purpose")(i)& "")
.Parameters("@cdpl_purpose_note")= StripHTML(TRIM(Request.Form("cdpl_purpose_note")(i)& ""))
.Parameters("@cdpl_note") = StripHTML(TRIM(Request.Form("cdpl_note")(i)& ""))
.Parameters("@mb_reg_id") = mb_sess_id
'프로시저 실행
.Execute , , adExecuteNoRecords
intResult = .Parameters("@intResult")
End With
''Set cmd = Nothing
If intResult <> 1 Then Exit For
End if
Next
End If
cmd.ActiveConnection.CommitTrans
cmd2.ActiveConnection.CommitTrans
Call closeDB()