프로시저를 실행했을 때 아래와 같이 오류가 나오는 경우가 있다.


오류 보고 -
ORA-01031: insufficient privileges
01031. 00000 -  "insufficient privileges"
*Cause:    An attempt was made to perform a database operation without
           the necessary privileges.
*Action:   Ask your database administrator or designated security
           administrator to grant you the necessary privileges


해결 방법

sysdba로 접속하여 아래와 같이 입력 ( SCOTT = user명 )

 

SQL>GRANT CREATE PROCEDURE TO SCOTT;

오라클 사이트에서 11g XE windows 버전으로 다운로드 후 설치

(설치파일 필요하신 분 댓글로 문의주세요.)


DB 접속 방법

 

1) cmd 실행

2) splplus / as sysdba

 - 관리자로 DB 접속하는 명령어

3) scott 계정 생성 및 권한 부여

CREATE USER scott IDENTIFIED BY tiger ;
ALTER USER scott DEFAULT TABLESPACE USERS ;
ALTER USER scott QUOTA UNLIMITED ON USERS ;
GRANT RESOURCE,CONNECT, DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE TO scott ;
ALTER USER scott ACCOUNT UNLOCK;

4) 리스너 재시작, SQL서버 재시작

cmd> lsnrctl stop
SQL> shutdown immediate
SQL> startup
cmd> lsnrctl start

 


DROP TABLE emp ;
CREATE TABLE emp
 (empno    NUMBER(4) NOT NULL,
  ename    VARCHAR2(10),
  job      VARCHAR2(9),
  mgr      NUMBER(4),
  hiredate DATE,
  sal      NUMBER(7, 2),
  comm     NUMBER(7, 2),
  deptno   NUMBER(2));
 

INSERT INTO emp VALUES (7369, 'SMITH',  'CLERK',     7902, DATE'1980-12-17',  800, NULL, 20);
INSERT INTO emp VALUES (7499, 'ALLEN',  'SALESMAN',  7698, DATE'1981-02-20', 1600,  300, 30);
INSERT INTO emp VALUES (7521, 'WARD',   'SALESMAN',  7698, DATE'1981-02-22', 1250,  500, 30);
INSERT INTO emp VALUES (7566, 'JONES',  'MANAGER',   7839, DATE'1981-04-02', 2975, NULL, 20);
INSERT INTO emp VALUES (7654, 'MARTIN', 'SALESMAN',  7698, DATE'1981-09-28', 1250, 1400, 30);
INSERT INTO emp VALUES (7698, 'BLAKE',  'MANAGER',   7839, DATE'1981-05-01', 2850, NULL, 30);
INSERT INTO emp VALUES (7782, 'CLARK',  'MANAGER',   7839, DATE'1981-06-09', 2450, NULL, 10);
INSERT INTO emp VALUES (7788, 'SCOTT',  'ANALYST',   7566, DATE'1987-04-19', 3000, NULL, 20);
INSERT INTO emp VALUES (7839, 'KING',   'PRESIDENT', NULL, DATE'1981-11-17', 5000, NULL, 10);
INSERT INTO emp VALUES (7844, 'TURNER', 'SALESMAN',  7698, DATE'1981-09-08', 1500,    0, 30);
INSERT INTO emp VALUES (7876, 'ADAMS',  'CLERK',     7788, DATE'1987-05-23', 1100, NULL, 20);
INSERT INTO emp VALUES (7900, 'JAMES',  'CLERK',     7698, DATE'1981-12-03',  950, NULL, 30);
INSERT INTO emp VALUES (7902, 'FORD',   'ANALYST',   7566, DATE'1981-12-03', 3000, NULL, 20);
INSERT INTO emp VALUES (7934, 'MILLER', 'CLERK',     7782, DATE'1982-01-23', 1300, NULL, 10);

DROP TABLE dept ;
CREATE TABLE dept
 (deptno NUMBER(2),
  dname  VARCHAR2(14),
  loc    VARCHAR2(13) );
 
INSERT INTO dept VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES (20, 'RESEARCH',   'DALLAS');
INSERT INTO dept VALUES (30, 'SALES',      'CHICAGO');
INSERT INTO dept VALUES (40, 'OPERATIONS', 'BOSTON');

DROP TABLE bonus ;
CREATE TABLE bonus
  (ename VARCHAR2(10),
   job   VARCHAR2(9),
   sal   NUMBER,
   comm  NUMBER);

DROP TABLE salgrade ;
CREATE TABLE salgrade 
(
  grade   NUMBER,
  losal   NUMBER,
  hisal   NUMBER
) ;

INSERT INTO salgrade VALUES (1,  700, 1200);
INSERT INTO salgrade VALUES (2, 1201, 1400);
INSERT INTO salgrade VALUES (3, 1401, 2000);
INSERT INTO salgrade VALUES (4, 2001, 3000);
INSERT INTO salgrade VALUES (5, 3001, 9999);
 
COMMIT;

MSSQL 사용할 때 아래와 같이 mybatis에서 + 연산자를 사용한다.

 - AND  TEL_NO LIKE '%'+#{tel_no}+'%'

 - AND  TEAM_ID = #{team_detail_id}

 - AND  TEAM_ID LIKE #{team_id}+'%'

 

하지만 postgreSQL에서는 아래와 같이 수정해야 한다.

 - AND  TEL_NO LIKE '%${tel_no}%'

 - AND  TEAM_ID = #{team_detail_id}

 - AND  TEAM_ID LIKE '${team_id}%'

 

postgreSQL은 문자열 간에 + 연산자를 사용하지 않는 것 같다.

문자열 간 합치고 싶을 땐 || 연산자를 사용한다.

 - select 'aa' || 'bb' as sumchar;   -- sumchar='aabb'

'DB > PostgreSQL' 카테고리의 다른 글

date type  (0) 2020.12.01

SELECT LEFT(“20140323”, 4) FROM sample;

> 2014

 

SELECT RIGHT(“20140323”, 4) FROM sample;

> 0323

 

SELECT SUBSTR(“20140323”, 1, 4) FROM sample;

> 2014

 

SELECT SUBSTR(“20140323”, 3) FROM sample;

> 140323

# type

 1) date : 시간은 안나오고 날짜만 나오는 type이다. ( 예 : 2020-12-01 )

 2) datetime : 날짜, 시간 나오는 type이다. ( 예 : 2010-11-05 10:06:51.133 )

 

# 함수

 1) SELECT GETDATE(); : 현재 시간을 호출

'DB > MSSQL' 카테고리의 다른 글

INDEX  (0) 2022.01.19

# type

 1) date : 시간은 안나오고 날짜만 나오는 type이다. ( 예 : 2020-12-01 )

 2) timestamp(3) : 날짜, 시간 나오는 type이다. ( 예 : 2010-11-05 10:06:51.133 )

 

# 연산자

 1) || : 문자열 합칠 때 사용

   - select 'aa' || 'bb' as sumchar;   -- sumchar='aabb'

 

# 함수

 1) SELECT NOW(); : 현재 시간을 호출

 2) COALESCE(컬럼, 대체값) : 컬럼이 null 인  경우 대체값으로 반환한다.

 3) CAST() : 타입을 변환할 때 사용

   - 문자 -> 숫자 : SELECT CAST ('100' AS INTEGER);

   - 숫자 -> 문자 : SELECT CAST (100 AS TEXT);

   - 문자 -> 날짜 : SELECT CAST ('2015-01-01' AS DATE);

 4) LENGTH() : 문자열, 숫자열 길이 구할 때 사용

   - select LENGTH('1234');  -- 4

   - select LENGTH('가나다');  -- 3

 5) LPAD(string, length, fill_text) : 

   - LPAD('12345', 10, '*'); -- *****12345

 

 

blog.naver.com/cjsong/222142472659

datarian-kr.github.io/blog/book-sql/

 

'DB > PostgreSQL' 카테고리의 다른 글

LIKE, + 연산자  (0) 2020.12.08

+ Recent posts