개발공작소
728x90
article thumbnail
[Oracle] 오라클 프로시저(Procedure) 생성 및 사용방법 ( DBeaver 활용 )
데이터베이스/Oracle 2022. 6. 3. 12:57

예전에 Postgresql에서 프로시저에 대해 정리를 해보았는데, 오라클도 한번 정리해보려고 한다. 프로시저란 쉽게 말해 자주 사용하는 쿼리를 미리 저장해놓았다가, 필요할 때마다 호출 하는 함수라고 생각하면 된다. 저장 프로시저라고도 한다. 오늘은 오라클에서 프로시저를 생성하고 호출하는 것만 해보려고 한다. 환경 : Oracle 11g , DBeaver 툴 사용 ( ※ 편하려고 DBeaver 툴 쓰는거니, sqlplus를 통해 직접 명령어를 입력해줘도 됨.. ) 글 쓰면서 알게 된 사실인데, Postgresql에는 Functions만 있고 Oracle은 Procedures와 Functions가 따로 있다. 신기하다. DBeaver가 알아서 그런 것도 캐치하는 듯... 아무튼 오늘은 프로시저를 만들거니까...

article thumbnail
[Oracle] 프로시저 호출 에러 ( SQL Error [900] [42000]: ORA-00900: invalid SQL statement )
데이터베이스/Oracle 2022. 6. 3. 12:11

오라클 프로시저를 호출 하였는데, 다음과 같은 에러가 발생했다. SQL Error [900] [42000]: ORA-00900: invalid SQL statement 에러 발생 원래 해당에러는 SQL문법이 잘못 되었을 때 생기는 에러인데.. 분명 문법적으로는 문제가 없는데.. 해당 프로시저 코드 CREATE OR REPLACE PROCEDURE MOCHI.TEST IS BEGIN UPDATE mochi.RECURSIVE_BOOK a SET a.BOOK_NAME = '6.25전쟁의_진실2' WHERE a.BOOK_ID = 111; END TEST; 프로시저 생성도 잘되었는데.. 왜 문법오류가 날까 해서 이것저것 찾아보았다. 그리고 아래 링크를 통해 찾게 된 방법은 exec 명령어가 아닌 call 명령어로..

article thumbnail
[Query] UNION, UNION ALL 연산을 통해 SELECT문 결과를 합쳐보자.
데이터베이스 2022. 5. 9. 21:46

핵심 UNION : 쿼리(SELECT문)을 합친다. 모든 중복 된 ROW는 제거 UNION ALL : 쿼리(SELECT문)을 합친다. 모든 중복 된 ROW도 결과로 보여준다. UNION ALL은 중복 된 녀석도 제거하지 않으므로, UNION보다 속도가 빠르다. UNION보다는 UNION ALL을 쓰도록 하자. 그리고 UNION/UNION ALL보다는 가능하다면 테이블을 통합하는 게 좋다. 아래는 샘플.. 보면서 이해하도록 하자. 샘플 테이블 CREATE TABLE UNION_TABLE1( UNION1_ID INTEGER, UNION1_NAME CHARACTER VARYING(20), UNION1_QTY CHARACTER VARYING(20) ); INSERT INTO UNION_TABLE1 VALUES ..

article thumbnail
[Postgres] 계층형 쿼리에 대한 정리 ( RECURSIVE )

오늘은 카테고리와 같은 기능을 구현할 때 쓰이는 계층형 쿼리에 대해 알아보자. Postgresql에서는 데이터의 트리구조(계층)를 표현하기 위해서 RECURSIVE 키워드를 통해 재귀적인 쿼리를 사용한다고 한다. 여기서 재귀란 어떠한 것을 정의할 때 자기자신을 참조한다는 의미이다. 중요한 건 아니니 바로 계층형 쿼리를 통해 트리구조를 만들어보자. 샘플 테이블 생성 CREATE TABLE RECURSIVE_BOOK( BOOK_ID INTEGER NOT NULL, PARENT_ID INTEGER, BOOK_NAME CHARACTER VARYING(20) NOT NULL, BOOK_QTY INTEGER, CONSTRAINT BOOK_KEY PRIMARY KEY (BOOK_ID)); 샘플 데이터 적재 INSER..

article thumbnail
[Oracle] 오라클에서의 사용자와 스키마에 대한 정리
데이터베이스/Oracle 2022. 5. 6. 17:10

회사를 다니면서 Postgres만 거의 2년간 사용하다 보니, 오랜만에 Oracle을 가지고 스키마를 생성해 사용하려 하니, 생소해서 오늘은 오라클에서의 스키마에 대해 한번 정리해보려고 한다. 오라클과 다른 데이터베이스 소프트웨어(Postgres/MySQL...)에서의 스키마는 조금 다르다. Postgres Oracle 이런 느낌이다.. 그래서 보통 Postgres를 사용할 때는 필요한 스키마를 생성해서 스키마에 테이블 만들고 썼었는데.. Oracle에서는 그게 안되더라.. 그럼 실제로 한번 스키마를 만들어보면서 이해 해보도록 하자. 1) Oracle 사용자 생성 -- MOCHI라는 사용자를 생성 CREATE USER MOCHI IDENTIFIED BY MOCHI; -- MOCHI 사용자에게 DBA 권한..

article thumbnail
[Oracle] ORA-00907 에러 ( SQL Error [907] [42000]: ORA-00907: missing right parenthesis )
데이터베이스/Oracle 2022. 4. 30. 13:05

오늘 테이블을 생성하는데, 아래와 같은 에러가 발생했다. SQL Error [907] [42000]: ORA-00907: missing right parenthesis 에러내용은 우괄호가 빠졌다는 이야기인데... 내가 작성한 DDL은 아래와 같다. CREATE TABLE TEST.sm_popup( pop_id numeric NOT NULL, pop_yn bpchar(1) NULL, pop_sub varchar(50), pop_con varchar(200), beg_de varchar(8) NOT NULL, end_de varchar(8) NOT NULL, CONSTRAINT sm_popup_pkey PRIMARY KEY ([p[_id) ); 보통 이 에러는 괄호가 빠졌거나, 콤마가 빠졌을 때 발생하는 에..

728x90