728x90

 수정한 날짜가 간으로 표시되는 이슈 해결방법

① 검색 메뉴에서  intl.cpl (아이 엔 티 엘 쩜 씨 피 엘)  입력

반응형

'[개발] DataBase Tool SAP' 카테고리의 다른 글

포인트 그 두번쨰.  (0) 2021.10.18
C에서 중요한 포인트?파해치자.  (0) 2021.10.18
서버_정기점검_리스트 방법  (0) 2020.06.04
테이블 설계 양식  (0) 2020.06.02
전산용어 정리  (0) 2020.05.29
728x90

 Column 2 has an invalid name and/or length

문제가 되는 서비스를 찾아서 시작유형을 변경해주는 것만으로 손쉽게 해결된다.

해결방법

Image Protect Service 서비스 뿐만 아니라 Team Viewer 8 때문에 동일한 문제가 발생하였다. 서비스를 하나하나 중지하면서 찾아보는게 좋을것 같다.나의 경우 Image Protect Service 라는 녀석이 문제였다. 해당 서비스를 중지하니 바로 정상 동작한다. 시작유형을 수동 으로 바꾸고 확인버튼을 누른다

 Teamview에서도 문제가 걸린다.

 

 

반응형
728x90

oracledb 라이브러리

: python으로 Oracle DB에 연결해서 DB작업을 할 수 있도록 도와주는 라이브러리
!pip install oracledb   # oracledb 라이브러리 설치하기
import oracledb         # oracledb 라이브러리 임포트(불러오기)

1. 업무 DB에 연결

con = oracledb.connect(user="사용자이름", password="비밀번호", dsn="호스트이름:port/SID")   # DB에 연결 (호스트이름 대신 IP주소 가능)
cursor = con.cursor()   # 연결된 DB 지시자(커서) 생성
  • dsn(데이터베이스 소스 이름)
    • 호스트 이름 또는 IP 주소 부분이 localhost 일 경우: 자체 시스템, 즉 현재 시스템에 있는 작업 DB를 가리킴
    • 포트번호 : DB 서버의 기본 포트번호는 1521입니다.

2. DB작업

cursor.execute("SQL문장")       # DB 명령 실행 (cursor가 임시 보관)
out_data = cursor.fetchall()   # cursor가 임시 보관한 내용을 out_data에 저장 (결과는 리스트)
# out_data 내용 출력해보기
for record in ou_data :
	print(record)
  • 여러 개의 함수를 실행하고 후, fetchall()로 한 번에 생성 가능
    • fetchone: 하나님께
    • fetchall: 여러 개가 왔어요 (결과는리스트!)
  • 커서 내용을 저장하여 출력하고 select문처럼 데이터가 조회되는 경우에만(sql 실행 시 반환되는 결과만 있을 경우에만) 내용이 저장됨
  • 주의할 점 : DML 작업을 실행했을 경우, commit을 실행하여 DB에 적용하게 되었습니다!

3. DB 연결 휴가

con.close()   # DB 연결 해제

사용예시

con = oracledb.connect(user="system", password="oracle", dsn="localhost:1521/XEPDB1") # 데이터베이스에 연결
cursor = con.cursor() # 연결된 데이터베이스 지시자 생성

print('데이터베이스 연결 성공~!!!')

# 1. emp테이블의 내용 확인
cursor.execute("select * from emp") # 데이터베이스 명령 실행( cursor가 임시로 보관)
out_data = cursor.fetchall() # 커서의 내용을 out_data에 저장 
for record in out_data: # out_data의 내용을 출력
    print(record)
print('-'*50)

# 2. dept테이블에 2개의 레코드를 삽입 후 승인
cursor.execute("insert into dept values(50, 'DEVELOPER','LA')")
cursor.execute("insert into dept values(60, 'DEVELOPER','ATL')")
cursor.execute('commit') # sqldeveloper에 커밋
cursor.execute("select * from dept")
out_data2 = cursor.fetchall()
for record in out_data2:
    print(record)
print('-'*50)
    
# 3. dept 테이블에서 dname이 "DEVELOPER"인 레코드 삭제 후 승인
cursor.execute("delete from dept where dname = 'DEVELOPER'")
cursor.execute("commit")
cursor.execute("select * from dept")
out_data2 = cursor.fetchall()
for record in out_data2:
    print(record)
print('-'*50)

# 4. emp 테이블과 dept 테이블을 inner join 수행
cursor.execute("select e.empno, e.ename, e.mgr, d.deptno, d.dname from emp e, dept d where e.deptno = d.deptno")
out_data = cursor.fetchall()
for record in out_data:
    print(record)
print('-'*50)

# 5. dept테이블의 구조와 내용을 이용하여 dept_ddl 테이블을 생성하시오. (단, create와 select를 활용하시오.)
cursor.execute("create table dept_ddl as select * from dept")
cursor.execute("select * from dept_ddl")
out_data = cursor.fetchall()
for record in out_data:
    print(record)
print('-'*50)

con.close() # 데이터베이스 연결 해제
  • 결과 :
반응형
728x90

/*--------------------------------------------------------------------- 
   Json Rest API
 ---------------------------------------------------------------------*/
OleObject lole_SrvHTTP
String ls_status, ls_response, ls_arg, ls_url
ls_arg = '{ "USER_NM": "xxxxxxx@xxxx.co.kr"}}'
ls_url = 'https://nexthr-apix.singlex.com/nexthr/hr-xmti/dev/xmti/v1/gw/org/LG01'
lole_SrvHTTP = CREATE  OleObject
lole_SrvHTTP.connectToNewObject("MSXML2.ServerXMLHTTP.6.0")
lole_SrvHTTP.Open('POST', ls_url, FALSE)
lole_SrvHTTP.SetRequestHeader( "Content-Type", "application/json")
lole_SrvHTTP.SetRequestHeader( "x-apikey", "xxxxxxxxxxxx")
lole_SrvHTTP.setOption(2,'13056') 
lole_SrvHTTP.send(ls_arg)
ls_status   = string(lole_SrvHTTP.Status)
ls_response = string(lole_SrvHTTP.ResponseText)
/*------------------------------------------------------------------------------------
  Datawindow로 자료 생성 
--------------------------------------------------------------------------------------*/
Reset()
long    p1, p2, row
string  ls_json, ls_Row[], ls_Cdata, item 
string  ls_Cols[]={"RSLTDT","HR_ORG_CD","PARENT_HR_ORG_CD","ORG_NM","ENG_ORG_NM","ORG_SORT","LCTN_CD","MGR_EMP_NO","DEPT_USEYN","LEVEL","PATH_HR_ORG_CD","PATH_ORG_NM","PATH_ENG_ORG_NM","PARENT_ORG_NM","PARENT_ENG_ORG_NM","MGR_EMP_NM"}
integer i, i_max, j, j_max
ls_json = of_replace(ls_response,'[','')
ls_json = Trim( of_replace(ls_json,']','') )
messagebox("확인",ls_json)
/*------------------------------------------------------------------------------------
  구분자로 되어 있는 String -> String Array
i_max = StringToArray( ls_json, '},', ls_Row[])
--------------------------------------------------------------------------------------*/
DO WHILE ls_json <> '' 
   item = Trim ( f_getfirstitem( ls_json, '},' )  )
   IF item = '' THEN 
   ELSE 
      i_max ++ 
      ls_Row[i_max] = item 
   END IF 
LOOP 
/*------------------------------------------------------------------------------------
  Datawindow 에 자료 추가 
--------------------------------------------------------------------------------------*/
j_max = UpperBound(ls_Cols[])
FOR i = 1 TO i_max
   ls_Row[i] = of_replace(ls_Row[i],'{'   ,'')
   ls_Row[i] = of_replace(ls_Row[i],'}'   ,'')
   ls_Row[i] = of_replace(ls_Row[i],'~r~n','')
   ls_Row[i] = of_replace(ls_Row[i],',"'  ,'^')
   ls_Row[i] = of_replace(ls_Row[i],'"'   ,'') + '^'
   
   row = Insertrow( 0 )
   FOR j = 1 TO j_max 
      // Column data  
      p1    = Pos( ls_Row[i], ls_Cols[j] )
      p2    = Pos( ls_Row[i], '^', p1 )
      ls_Cdata = Mid( ls_Row[i], p1, p2 - p1 )
      f_getfirstitem( ls_Cdata, ':' )  // ls_Cdata = Trim( f_nth(ls_Cdata,':',2) )
      ls_Cdata = Trim( of_replace(ls_Cdata,',','') )
      CHOOSE CASE j
         CASE 1
            CHOOSE CASE ls_Cdata
               case '1' ; Setitem(row, j, '성공')
               case '2' ; Setitem(row, j, 'Data코드오류')
               case '3' ; Setitem(row, j, '인증코드오류')
               case '4' ; Setitem(row, j, '일일제한횟수마감')
            end choose
         CASE 7, 11 //number
            Setitem(row, j, integer(ls_Cdata))
         CASE 2, 3     //char
            Setitem(row, j, ls_Cdata)
         CASE ELSE     //decimal
            Setitem(row, j, Dec(ls_Cdata))
      END CHOOSE
   NEXT 
NEXT 
Sort()
DESTROY lole_SrvHTTP


lole_SrvHTTP.setOption(2,'13056') //  https 연동시 ssl 인증서가 정상 설치 되지 않은 경우 인증서 무시 옵션

lole_SrvHTTP.send(ls_arg)
ls_status   = string(lole_SrvHTTP.Status)
ls_response = string(lole_SrvHTTP.ResponseText)
DESTROY lole_SrvHTTP


이거 없으면 연동 안됨.



반응형
728x90

반응형
728x90

 

 

 

반응형
728x90

 

 

반응형
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts