[ORACLE] VARCHAR(4000) 과 LONG 형의 ASP에서 차이점..과 사용후기
- Posted at 2007/11/27 09:34
- Filed under 일함서/하다보면말이지
눈앞에 일들을 해결못하는게 한두가지가 아니다 ㅠㅠ!! ㅇ ㅏ ㄴ ㅏ~! 난 왜이리 무식하나~!
후... 그중 1개를 또 알아서 해보니까....되어서 후기를 다시 남겨둔다..ㅠㅠ 과장님이 도와주셔서 겨우..ㅠㅠ!!
기획자 왈~ : 이대리님....게시글 몇게 예제로 넣어주기로 했는데 긴글넣으니까 글이 안올라가요...
나.. : 헉...올것이 왔구나...
varchar(4000)으로 해둔 내용부분 필드에 문제점은 만들자마자 한계를 들어냈다 ㅠㅠ!!
CLOB, BLOB를 사용해라...뭐해라 등등 많이 있었지만...그것도 낮은 버전의 오라클이기에 소용없는 예기였다..
그래서 LONG형으로 했더니..!! 헥? 들어가는 내용이 같은데도 짤린다고 다시 나오네~;;
진짜 MSSQL이 너무 그립다!!
사설은 이만하고
sql = "INSERT INTO 테이블명("
sql = sql & "기본키(증가),"
sql = sql & "필드1,"
sql = sql & "필드2,"
sql = sql & "필드3) values ("
sql = sql & "시퀀스명.nextval, "
sql = sql & "'" & 값1 & "',"
sql = sql & "'" & 값2 & "',"
sql = sql & "'" & 값3 & "'"
sql = sql & ")"
DbCon.execute sql
형식의 쿼리는 4000이상을 받아들이지 못한다고 한다 이유는 모린다~! 나중에 알아봐야지..!!
그래서 알아본결과 역시 포탈의 힘은 무시를 못한다 ㅋㅋㅋㅋㅋ 다 나온다 단 그대로 하면 안되는 경우가 많고
그래도 해서 잘되는 사람도있겠지만...나의 경우는 이러했다!!
우선 CLOB, BLOB는 제낀다..안되니까 ㅡㅡ;;
그래서
sql = "select SEQ_TEST_TABLE.currval as CURRVAL_IDX from dual"
objRs.open sql, dbCon
CURRVAL_IDX = objRs("CURRVAL_IDX")
objRs.close
sql = "update TEST_TABLE set CONTENT=" & CONTENT & " where IDX=" & CURRVAL_IDX
set ocmd = Server.CreateObject("ADODB.Command")With ocmd
.ActiveConnection = dbCon
.CommandType = adCmdText
.CommandText = sql
.Parameters.Append .CreateParameter("@CONTENT", adLongVarWChar, adParamInput, len(CONTENT),CONTENT)
.Parameters.Append .CreateParameter("@IDX", adInteger, adParamInput, ,IDX)
.Execute
End With
이런 형식의 시도를 해보았으나....실패 ㅠㅠ 이건도 나중에 다시 해보야할꺼같긴 한데..;;
아무튼 결론은
sql = "select 시퀀스명.nextval as IDX from dual"붉은색 부분이 키포인트라고 하는데...;; 이유는 모르고 우선 시키는데로 했다
rs.open sql, dbCon
IDX = rs("IDX")
rs.close
set rs = server.CreateObject("adodb.recordset")
rs2.open "테이블명", dbCon, 1, 3, 2
with rs2
.AddNew
.Fields("IDX") = IDX
.Fields("UPFILE01") = UPFILE01
.Fields("REGDATE") = now()
.Fields("REGIP") = request.ServerVariables("REMOTE_ADDR")
.Fields("HITS") = 0
.Fields("TITLE") = TITLE
.Fields("CONTENT") = CONTENT
.Update
.Close
end with
그래도 안되었지만 상단에 dbCon.CursorLocation = 3
라는것을 선언후에는 무리없이 긴글이(LONG형이 허용하는 길이까지) 무리없이 들어갔다..
이번 포스트는 아쉬움을 좀 많이 남기는데 붉은색 부분에대한거와 커서에관한 공부를좀더해서
포스팅해둬야할꺼 같다...쓰읍~!
추가로 업데이트는 아래와 같은 형식으로 처리해야한다
sql = "테이블명 where IDX = " & IDX
set rs = server.CreateObject("adodb.recordset")
rs.open sql, dbCon, 1, 3, 2
with rs
.Fields("TITLE") = TITLE
.Fields("CATEGORY") = CATEGORY
.Fields("VIEWTF") = VIEWTF
.Fields("FLAG") = FLAG
.Fields("ADMIN_CHECK") = ADMIN_CHECK
if UPFILE01 <> "" then
.Fields("UPFILE01") = UPFILE01
end if
.Fields("CONTENT") = CONTENT
.Update
.Close
end with
Posted by web20korea
- Tag
- AddNew




,
BLOB



,
clob



,
Oracle



,
오라클 긴글




- Response
- No Trackback , No Comment

