2021년 11월 6일 토요일

C#, 가변길이 매개변수(params)

C#, 가변길이 매개변수(params)


C#에서는 메소드를 선언할 때 params 키워드를 지정하여 개수가 가변적인 매개변수를 메소드에 전달할 수 있다. 매개변수 목록에는 일반적인 매개변수도 포함될 수 있지만 params 키워드를 사용하여 선언한 매개변수는 목록의 맨 마지막에 사용해야 한다.(매개변수의 개수를 이용한 메소드의 오버로딩은 사용 안 해도 될 것 같다.)


using System;

namespace ConsoleApplication1

{   

    class Program

    {

        private static void OnjSum(string title, params int[] num)

        {

            int sum = 0;

            Console.WriteLine("Sum of {0}", title);

 

            foreach(int i in num) sum += i;

 

            Console.WriteLine("Sum :: {0}\n", sum);

        }

 

        static void Main(string[] args)

        {

 

            int[] onjArray = new int[2] { 1, 2 };

 

            OnjSum("숫자하나", 1);

            OnjSum("숫자둘", 1, 2);

            OnjSum("숫자셋", 1, 2, 3);

            OnjSum("배열", onjArray);

        }

    }

}

 

[결과]

 

Sum of 숫자하나

Sum :: 1

 

Sum of 숫자둘

Sum :: 3

 

Sum of 숫자셋

Sum :: 6

 

Sum of 배열

 

Sum :: 3


 

오라클 테이블, 컬럼 기본값(Column Default Value) 설정

 

오라클 테이블, 컬럼 기본값(Column Default Value) 설정


DEFAULT 키워드를 사용하여 테이블의 컬럼에 기본값을 제공 할 수 있습니다. DEFAULT 키워드는 INSERT INTO 문이 컬럼에 특정 값을 제공하지 않을 때 기본값을 제공합니다. 기본값은 리터럴 값, 표현식 또는 SYSDATE와 같은 SQL 함수일 수 있습니다.


[기본형식]

COLUMN_NAME DATA_TYPE DEFAULT [ON NULL] DEFAULT_VALUE


  • COLUMN_NAME : 컬럼명

  • DATA_TYPE : 컬럼의 데이터 타입

  • DEFAULT DEFAULT_VALUE : 컬럼에 기본값을 설정 합니다.

  • DEFAULT ON NULL DEFAULT_VALUE : INSERT 쿼리에 명시 적으로 NULL이 지정되어 있어도 NULL이되지 않고 DEAULT_VALUE 값이 정의됩니다.


DEFAULT ON NULL 구는 오라클12C 이후에 사용가능하며 컬럼에 NULL 이 입력되는 경우 종해진 기본값을 설정하기 위한 구문 입니다. NULL을 허용하면서 DEFAULT 구문에 의해 기본값이 설정된 컬럼에 NULL이 명시적으로 입력되는 경우 기본값이 적용되지 않았던 문제점을 해결하기 위해 도입된 것 입니다.


<실습에 대한 긴 설명>

실습


기본값 실습을 위해 사번(empno), 이름(ename), 입사일(hire_date) 3개의 컬럼을 가지는 EMP10 테이블을 생성하고 4개의 값을 입력 후 EMP10 테이블을 조회 합니다.


다음과 같은 조건으로 EMP10 테이블을 생성하세요.


  • 사번(empno) number, primary key(table level constraints)

  • 성명(ename) varchar2(50)

  • 입사일(hire_date) date default sysdate


DROP TABLE EMP10;

CREATE TABLE EMP10 (

     EMPNO NUMBER ,                                          

     ENAME VARCHAR2(50) ,

     HIRE_DATE DATE DEFAULT SYSDATE ,

     CONSTRAINTS PK_EMP10 PRIMARY KEY(EMPNO)

);


<실행결과>

Table EMP10이(가) 생성되었습니다.


데이터 4건을 입력하고 EMP10 테이블을 조회합니다.


4건의 행을 입력 합니다.


INSERT INTO EMP10(EMPNO, ENAME) VALUES (1, '홍길동1');

INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (2, '홍길동2', DEFAULT);

INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (3, '홍길동3', '');

INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (4, '홍길동4', NULL);


입력된 데이터를 확인해 봅시다.


SELECT * FROM EMP10;


<실행결과>

 

EMPNO

ENAME

HIRE_DATE

1

1

홍길동1

20/12/27

2

2

홍길동2

20/12/27

3

3

홍길동3

(null)

4

4

홍길동4

(null)


오라클 SYSDATE 함수는 날짜와 시간을 시스템 기준으로 읽어 오는 함수 입니다. HIRE_DATE 컬럼에 아예 값을 입력하지 않으면 기본값인 현재 날짜, 시간이 입력되지만 ‘’ 또는 NULL로 명시적으로 값을 입력하면 기본값이 동작하지 않습니다.


그래서 오라클 12C 이후에는 DEFAULT ON NULL 구를 제공해서 ‘’ 또는 NULL 이 입력되는 경우도 기본값을 적용할 수 있도록 변경 되었습니다. 다음 실습에서 확인해 보세요.

실습


다음과 같은 조건으로 EMP10 테이블을 생성하세요.


  • 사번(empno) number, primary key(table level constraints)

  • 성명(ename) varchar2(50)

  • 입사일(hire_date) date default on null sysdate


DROP TABLE EMP10;

CREATE TABLE EMP10 (

     EMPNO NUMBER ,                                          

     ENAME VARCHAR2(50) ,

     HIRE_DATE DATE DEFAULT ON NULL SYSDATE ,

     CONSTRAINTS PK_EMP10 PRIMARY KEY(EMPNO)

);


<실행결과>

Table EMP10이(가) 생성되었습니다.


데이터 4건을 입력하고 EMP10 테이블을 조회합니다.


4건의 행을 입력 합니다.


INSERT INTO EMP10(EMPNO, ENAME) VALUES (1, '홍길동1');

INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (2, '홍길동2', DEFAULT);

INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (3, '홍길동3', '');

INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (4, '홍길동4', NULL);


입력된 데이터를 확인해 봅시다.


SELECT * FROM EMP10;


<실행결과>

 

EMPNO

ENAME

HIRE_DATE

1

1

홍길동1

20/12/27

2

2

홍길동2

20/12/27

3

3

홍길동3

20/12/27

4

4

홍길동4

20/12/27


3, 4번째 행의 HIRE_DATE 컬럼에 ‘’ , NULL 이 입력되었지만 기본값이 적용 되었습니다. 오라클에서는 ‘’ 는 NULL과 동일하게 해석됩니다.

 

#컬럼기본값, #칼럼기본값, #Column기본값, #오라클, #ORACLE​

오라클 테이블, 무결성 제약조건의 활성화, 비활성화

 

오라클 테이블, 무결성 제약조건의 활성화, 비활성화

 

대량의 데이터를 입력하면 제약조건 검사로 시간이 오래 걸리거나 일부 데이터 오류로 무결성 제약조건을 비활성화해야 될 경우가 있습니다. 이럴 때는 제약조건을 비활성화한 후 데이터를 입력받아 수정 후 다시 활성화하면 됩니다.

 

[기본 형식]

ALTER TABLE table_name ENABLE[NOVALIDATE] CONSTRAINT constraint_name

ALTER TABLE table_name DISABLE CONSTRAINT constraint_name


ALTER TABLE ~ DISABLE CONSTRAINT 명령으로 제약조건을 비활성화, ALTER TABLE ~ ENABLE CONSTRAINT 명령으로 제약조건을 활성화하는 실습을 해보겠습니다.

실습


대체로 테이블 생성시 NOT NULL 제약조건에 대해 이름을 부여하는 경우는 없습니다. 그래서 아래 실습을 하기 위해서는 테이블의 컬럼에 걸린 제약조건 이름을 조회 할 수 있어야 합니다.



CUSTOMER 테이블의 name 컬럼에 걸린 NOT NULL 제약조건의 이름을 확인 합니다.



SELECT TABLE_NAME

             , CONSTRAINT_NAME

             , CONSTRAINT_TYPE

             , SEARCH_CONDITION

FROM    USER_CONSTRAINTS

WHERE TABLE_NAME = 'CUSTOMER';


<실행결과>

 

TABLE_NAME

CONSTRAINT_NAME

CONSTRAINT_TYPE

SEARCH_CONDITION

1

CUSTOMER

SYS_C007522

C

"NAME" IS NOT NULL


name 컬럼의 NOT NULL 제약조건의 이름은 ‘SYS_C007522’ 입니다. 아마도 CONSTRAINT_NAME 컬럼의 값은 독자 여러분의 실행결과와 다를  것 이니 반드시 본인의 CONSTRAINT_NAME 컬럼의 값을 아래 실습에서 사용하세요.


CUSTOMER 테이블의 name 컬럼에 걸린 NOT NULL 제약조건을 비활성화 후 다시 활성화하세요.


ALTER TABLE CUSTOMER DISABLE CONSTRAINT SYS_C007522 ;

ALTER TABLE CUSTOMER ENABLE CONSTRAINT SYS_C007522 ;


<실행결과>

Table CUSTOMER이(가) 변경되었습니다.

 

#제약조건활성화, #제약조건비활성화,#오라클, #ORACLE, #DISABLECONSTRAINT

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...