Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.4.1 |  CUBRID 9.0.0 | 



구문/타입 관련 파라미터

다음은 CUBRID에서 지원하는 SQL 구문 및 데이터 타입에 관한 파라미터로 각 파라미터의 타입과 설정 가능한 값의 범위는 다음과 같다.

파라미터 이름

타입

기본값

add_column_update_hard_default

bool

no

alter_table_change_type_strict

bool

no

ansi_quotes

bool

yes

block_ddl_statement

bool

no

block_nowhere_statement

bool

no

compat_numeric_division_scale

bool

no

default_week_format

int

0

group_concat_max_len

int

1024

intl_mbs_support

bool

no

no_backslash_escapes

bool

yes

only_full_group_by

bool

no

oracle_style_empty_string

bool

no

pipes_as_concat

bool

yes

plus_as_concat

bool

yes

require_like_escape_character

bool

no

return_null_on_function_errors

bool

no

add_column_update_hard_default

add_column_update_hard_defaultALTER TABLE … ADD COLUMN 절로 새로운 컬럼을 추가할 때 이 컬럼에 입력할 값을 고정 기본값(hard_default)으로 제공할지 여부를 설정하는 파라미터로서, 기본값은 no이다.

이 파라미터 값이 yes이면 NOT NULL 제약 조건이 있고 DEFAULT 제약 조건이 없을 때 컬럼의 새로운 입력값을 고정 기본값(hard default value)으로 입력하며, no이면 NOT NULL 제약조건이 있더라도 NULL로 입력한다. 이 파라미터의 값이 yes일 때 추가하려는 컬럼의 타입에 고정 기본값이 없으면 오류를 출력하고 롤백한다. 각 타입별 고정 기본값에 대해서는 ALTER TABLE 문의 CHANGE, MODIFY 절을 참고한다.

-- add_column_update_hard_default=no

 

CREATE TABLE tbl (i INT);

INSERT INTO tbl VALUES (1),(2);

ALTER TABLE tbl ADD COLUMN j INT NOT NULL;

 

SELECT * FROM TBL;

 

            i          j

========================

            2       NULL

            1       NULL

 

-- add_column_update_hard_default=yes

 

CREATE TABLE tbl (i int);

INSERT INTO tbl VALUES (1),(2);

ALTER TABLE tbl ADD COLUMN j INT NOT NULL;

 

SELECT * FROM tbl;

 

            i          j

=========================

            2          0

            1          0

alter_table_change_type_strict

alter_table_change_type_strict는 타입 변경에 따른 해당 컬럼 값들의 변환 허용 여부를 지정하는 파라미터로서, 기본값은 no이다. 이 파라미터 값이 no이면 컬럼의 타입 변경이나 NOT NULL 제약 조건을 추가할 때 값의 변경이 발생하며, yes이면 값의 변경이 발생하지 않는다. 자세한 내용은 ALTER TABLE 문의 CHANGE, MODIFY 절을 참고한다.

ansi_quotes

ansi_quotes는 식별자 처리를 위한 기호 또는 문자열을 감싸는 기호에 관한 파라미터로 기본값은 yes이다. 이 파라미터 값이 yes이면 큰따옴표는 식별자 처리 기호로 해석되고, 작은따옴표는 문자열 처리 기호로 해석된다. 이 값이 no이면 큰 따옴표와 작은 따옴표 모두 문자열 처리 기호로 해석된다.

block_ddl_statement

block_ddl_statement는 클라이언트가 수행하는 데이터 정의문(Data Definition Language, DDL)을 제한하기 위한 파라미터로 no로 설정하면 해당 클라이언트의 데이터 정의문 수행을 허용하며, yes로 설정하면 해당 클라이언트의 데이터 정의문 수행을 허용하지 않는다. 기본값은 no이다.

block_nowhere_statement

block_nowhere_statement는 클라이언트가 수행하는 조건절(WHERE)이 없는 UPDATE/DELETE 문을 제한하기 위한 파라미터로 no로 설정하면 해당 클라이언트의 조건절이 없는 UPDATE/DELETE 문을 허용하며, yes로 설정하면 해당 클라이언트의 조건절이 없는 UPDATE/DELETE 문의 수행을 허용하지 않는다. 기본값은 no이다.

compat_numeric_division_scale

compat_numeric_division_scale은 나눗셈 연산의 결과 값(몫)에 대하여 소수점 이하 자릿수를 몇 자리까지 표시할 것인가를 지정하기 위한 파라미터로 no로 설정하면 몫의 소수점 이하 자릿수가 9개가 되고, yes로 설정하면 몫의 소수점 이하 자릿수가 피연산자의 소수점 이하 자릿수에 따라 결정된다. 기본값은 no이다.

default_week_format

default_week_formatWEEK 함수 mode 인자의 기본값을 설정한다. 기본값은 0이다. 자세한 내용은 WEEK 함수를 참고한다.

group_concat_max_len

group_concat_max_lenGROUP_CONCAT 함수의 리턴 값의 크기를 제한하는 파라미터로서 기본값은 1024바이트이며, 최소값은 4바이트, 최대값은 33,554,432바이트이다. GROUP_CONCAT 함수의 결과가 제한을 넘으면 NULL을 반환한다.

intl_mbs_support

intl_mbs_support는 멀티바이트 문자 세트(Multibyte Character Set)의 지원 여부를 지정하기 위한 파라미터이며, 기본값은 no이다. 한글과 같은 멀티바이트 문자로 테이블 이름 또는 컬럼 이름을 생성하는 경우, 이 파라미터 값을 yes로 설정해야 한다. 단, 멀티바이트 문자 세트를 지원하기 위한 연산 비용이 크므로, 성능 향상을 위해 intl_mbs_support 파라미터를 no로 설정하고 테이블 이름이나 컬럼 이름을 영어로 사용할 것을 권장한다.

no_backslash_escapes

no_backslash_escapes은 이스케이프 문자로 백슬래시() 사용 여부에 관한 파라미터로서, 기본값은 yes이다. 이 파라미터 값이 no이면 백슬래시()가 이스케이프 문자로 사용되며, yes이면 백슬래시는 일반 문자로 사용된다. 자세한 설명은 특수 문자 이스케이프를 참고한다.

only_full_group_by

only_full_group_byGROUP BY 절 사용에 관한 확장된 문법의 사용 여부를 설정하는 파라미터이다.

이 파라미터 값이 no이면 확장된 문법이 적용되므로 GROUP BY 절에 명시되지 않은 컬럼을 SELECT 컬럼 리스트에 명시할 수 있고, 이 값이 yes이면 GROUP BY 절에 명시된 컬럼만 SELECT 컬럼 리스트에 명시할 수 있다.

기본값은 no이므로, SQL 표준에 따라 질의를 수행하려면 only_full_group_by 파라미터 값을 yes로 설정한다. 이 경우에는 확장된 문법이 적용되지 않으므로 실행 결과로 아래와 같은 에러가 출력된다.

ERROR: Attributes exposed in aggregate queries must also appear in the group by clause.

oracle_style_empty_string

oracle_style_empty_string은 다른 DBMS(Database Management System)와의 호환성을 향상시키기 위한 파라미터로 빈 문자열(empty string)을 Oracle DBMS와 마찬가지로 NULL로 처리할 것인지 지정한다. oracle_style_empty_string 파라미터를 no로 설정하면 빈 문자열을 유효한 문자열로 처리하고, yes로 설정하면 Oracle DBMS와 마찬가지로 빈 문자열을 NULL로 처리한다.

pipes_as_concat

pipes_as_concat은 이중 파이프 기호(||)의 사용에 관한 파라미터로서, 기본값은 yes이다. 이 파라미터 값이 yes이면 이중 파이프 기호가 문자열의 병합 연산자로 해석되고, no이면 부울린(boolean) 연산자인 OR로 해석된다.

plus_as_concat

plus_as_concat+ 연산자의 사용에 관한 파라미터로서, 기본값은 yes이다. 이 파라미터 값이 yes이면 + 연산자가 문자열의 병합 연산자로 해석되고, no이면 수치 연산자로 해석된다.

-- plus_as_concat = yes

SELECT '1'+'1';

         '1'+'1'

======================

         '11'  SELECT '1'+'a';

 

         '1'+'a'

======================

         '1a'

 

-- plus_as_concat = no

SELECT '1'+'1';

                '1'+'1'

==========================

 2.000000000000000e+000

 

SELECT '1'+'a';

 

ERROR: Cannot coerce 'a' to type double.

require_like_escape_character

require_like_escape_characterLIKE 절의 이스케이프 문자 사용 여부에 관한 파라미터로서, 기본값은 no이다. 이 파라미터 값이 yes이고 no_backslash_escapes가 no이면 LIKE 절의 문자열에서 백슬래시()가 이스케이프 문자로 사용되며, 그렇지 않으면 LIKE… ESCAPE 절을 사용하여 이스케이프 문자를 명시해야 한다. 자세한 내용은 LIKE 조건식을 참고한다.

return_null_on_function_errors

return_null_on_function_errors는 일부 SQL 함수에서 에러가 발생할 때의 동작을 정의하는 파라미터로서, 기본값은 no이다. 이 파라미터 값이 yes이면 함수에서 에러가 발생할 때 NULL을 반환하며, no이면 함수에서 에러가 발생할 때 에러를 반환하고 관련 메시지를 출력한다.

다음 SQL 함수가 이 시스템 파라미터의 영향을 받는다.

  • ADDTIME
  • DATEDIFF
  • DAY
  • DAYOFMONTH
  • DAYOFWEEK
  • DAYOFYEAR
  • FROM_DAYS
  • FROM_UNIXTIME
  • HOUR
  • LAST_DAY
  • MAKEDATE
  • MAKETIME
  • MINUTE
  • MONTH
  • QUARTER
  • SEC_TO_TIME
  • SECOND
  • TIME
  • TIME_TO_SEC
  • TIMEDIFF
  • TO_DAYS
  • WEEK
  • WEEKDAY
  • YEAR

-- return_null_on_function_errors=no

 

SELECT HOUR('2010-01-01');

 

ERROR: Conversion error in time format.

 

-- return_null_on_function_errors=yes

 

SELECT HOUR('2010-01-01');

 

   hour('2010-01-01')

======================

  NULL