Databate
-
[postgreSQL] 멀쩡한 컬럼인데 column does not exist 오류가 발생할 때개발/Database 2019. 1. 17. 09:37
이번에 시작한 토이 플젝에는 한번도 안 써본 디비를 써보자! 해서 야심차게 postgreSQL을 도입하지만 처음 짜넣은 아주 간단한 select 문 실행에서부터 막혀버렸다ㅠ.ㅠ SELECT COUNT(*) FROM V WHERE VOCA = #{voca} 라는 아주 아주 간단한 쿼리 문인데도 에러가 뜨면서 Column 'voca' does not exist 라고 찍힌다. 대체 왜??? 혹시나 오타가 났나 싶어서 다시 들여다봤지만 오타도 아니었다. 검색해보니 내가 지금까지 써본 DB는 대문자가 기본이고, 컬럼이나 테이블명에서는 대소문자 구별이 없어서 쿼리 짤 때 대문자로 쓰든 소문자로 쓰든 상관이 없었으나postgreSQL은 소문자가 기본인게 모든 것의 원인이었다..... (출처 : https://post..
-
SYS_CONTEXT 함수로 세션정보 추출하기개발/Database 2019. 1. 14. 13:19
세션에 담긴 접속IP주소를 추출하려면 당연히 자바 컨트롤러에서 뽑아내는 것이라고 생각했는데이번 프로젝트를 하면서 DB에서 쿼리로 뽑아낼 수도 있다는 것을 알았다. 지금까지 확인한 바로는 오라클과 티베로에서 SYS_CONTEXT 라는 함수를 사용하여 추출이 가능하다. (출처 : https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions165.htm) 사용법- SYS_CONTEXT('namespace' , 'parameter') - namespace 로 'userenv' 를 입력하면 현재 세션의 환경정보 추출 가능- 예 : IP 주소 추출 시SELECT SYS_CONTEXT('userenv', 'IP_ADDRESS') FROM DUAL;
-
[이클립스 에러] No suitable driver found for jdbc 해결개발/문제 해결 2019. 1. 11. 11:45
새로 프로젝트를 받아서 로컬 톰캣 서버에 띄워놓고 작업을 시작하려는 찰나,서버 스타트를 누른지 얼마 되지도 않아 이클립스가 또 에러를 뱉어낸다ㅠㅠㅠㅠ java.sql.SQLException: No suitable driver found for jdbc:log4jdbc:tibero:thin:@ 흐아아아ㅏ아아아아ㅏㅏ아 이런 경우 남들은 보통 1. 접속할 DB IP, 유저, 패스워드 부분에 오타가 없는지 확인하고2. 라이브러리에 jdbc 드라이버가 있는지 확인하고 다시 추가해주고다시 띄워보면 잘 접속이 된다는데...... 지금 띄워야 하는 프로젝트는 아키텍처 관리하시는 분께서 globals.properties 에 접속 정보를 입력한 상태에서 개발 svn에 올려주셔서 1번은 문제가 없는걸 확인했고jdbc 드라이..
-
TABLE Function 이라는 것도 있다개발/Database 2019. 1. 9. 14:20
DB 담당 수석님께서 짜서 던져주신 쿼리를 보다가 난생 처음 보는 신택스를 만나서 검색오늘도 출처는 구루비 (http://www.gurubee.net/lecture/2238) 아직 내용을 완벽하게 이해한 것이 아니라 간단하게 요약만 남기고 끝낸다...흐흑 Table Function - Result Set 전체를 인자 값으로 받아서 결과를 Return 하고자 할 경우 유용하게 사용 가능 - Table Function / Pipelined Table Function - SELECT * FROM TABLE( Row 출력 Function ) 형태로 사용 가능
-
데이터베이스의 SYNONYM 은 뭐하는 놈일까개발/Database 2018. 9. 7. 09:20
오늘도 출처는 구루비와 오라클 공식 문서 출처 : http://www.gurubee.net/lecture/1038 https://docs.oracle.com/apps/search/search.jsp?word=SYNONYM&product=b28359-01&book=b28286 SYNONYM이란? - 테이블, 뷰, 시퀀스, 오퍼레이터, 프로시저, 패키지 등 객체에 대한 별칭 - 객체에 대한 직접적인 참조 - 객체의 실제 이름과 소유자, 위치를 감춰 데이터베이스 보안 개선 가능 - 객체의 Public Access 를 제공 - 객체의 긴 이름을 사용하기 편한 짧은 이름으로 해서 SQL문을 단순화 할 수 있음 - 참조하고 있는 객체의 이름이 바뀌거나 이동했을 때, 해당 객체를 사용하는 SQL 문을 모두 고칠 필요..
-
PL/SQL 실행 블럭에서 동적 쿼리 작성하기개발/Database 2018. 8. 8. 15:44
PL/SQL 내부에서 동적으로 스키마명과 테이블명을 받아 전체 데이터 건수를 뽑아내는 쿼리 결론부터 말하자면 쿼리 스트링을 만들어 준 다음에'EXECUTE IMMEDIATE 쿼리' 명령어를 추가해주면 된다. CREATE OR REPLACE FUNCTION F_TEST(P_S_NAME VARCHAR2, P_T_NAME VARCHAR2) --스키마명과 테이블명을 파라미터로 받음RETURN NUMBERISV_TMP NUMBER; --데이터 건수를 담아 리턴할 변수V_TMP_QUERY VARCHAR2(4000); --쿼리문을 담을 변수 BEGIN V_TMP_QUERY := 'SELECT COUNT(*) FROM ' || P_S_NAME || '.' || P_T_NAME ; --동적 쿼리 작성EXECUTE IMM..
-
PL/SQL 에서의 FUNCTION vs PROCEDURE개발/Database 2018. 8. 8. 15:19
FUNCTION 은 리턴값이 있는 서브프로그램이고,PROCEDURE 는 리턴값이 없는 서브프로그램이다. 사실 와꾸만 써놓고 정리를 안해서 안 올리고 있지만 VBA에서나 PL/SQL에서나 FUNCTION과 PROCEDURE 의 차이점은 거의 비슷하다....(내가 잘 몰라서 똑같다고는 말 못함) 직접 짜다보니 왜 프로그램이라는 명칭을 붙여줬는지 이해가 간다. 잘 써먹으면 정말 쪼그마한 프로그램 하나를 붙여서 쓰는 효과가 나기에...ㅎ 뭔소리야 아무튼 거의 2년간 PL/SQL을 만질 일이 없어서 까먹고 있다가 오랜만에 구문 보면서 짜려니 다른 분들의 설명이 잘 눈에 안 들어와서 내 맘대로 다시 정리한다.오늘도 출처는 훌륭한 구루비 선생님http://www.gurubee.net/lecture/1342http:/..
-
PL/SQL로 테이블 접근 시 ORA-00942 에러 원인개발/문제 해결 2018. 8. 8. 09:26
쿼리를 짜다보니 필요해서 어쩔 수 없이 DBA 계정에서 PL/SQL을 써서 새 함수를 짜넣고 테스트를 해보는데 계속 에러가 떴다. 더 이상 꼴도 보기 싫은 ORA-00942 ㅠㅠㅠㅠDBA 계정인데다가 SELECT * FROM 스키마.테이블; 하면 결과가 잘 나오기 때문에 설마 권한 문제라고는 생각 안했는데 권한 문제였음^.^ 찾아보니 PL/SQL 을 실행하게 되면 DBMS_SQL 패키지를 이용하게 되는데, 이때 명시적 접근 권한을 요구하기 때문에 DBA 계정일지라도 오류가 발생하는 것이라고 한다.바로 GRANT SELECT ON 스키마.테이블; 을 실행하고 나니 이상 없다. 즉. PL/SQL을 실행하려면 ROLE을 사용하여 부여된 권한이 아니라 직접 부여된 권한이 필요하다ㅠㅠ 출처 : http://juh..