:meta-keywords: call statement, cubrid method type :meta-description: The methods are written in C with built-in functions of CUBRID database system, and are called by the CALL statement. ****** 메서드 ****** 메서드(method)는 CUBRID ë°ì´í„°ë² ì´ìФ ì‹œìŠ¤í…œì˜ ë‚´ìž¥ 함수로 C로 ìž‘ì„±ëœ í”„ë¡œê·¸ëž¨ì´ê³ , **CALL** ë¬¸ì— ì˜í•´ 호출ëœë‹¤. 메서드 í”„ë¡œê·¸ëž¨ì€ ë©”ì„œë“œê°€ 호출ë˜ì—ˆì„ 때 ë™ì 로ë”ì— ì˜í•´ 실행 ì¤‘ì¸ ì‘용과 함께 로드(load)ë˜ê³ ì—°ê²°(link)ëœë‹¤. 메서드 실행 ê²°ê³¼ ìƒì„±ëœ 리턴 ê°’(return value)ì€ í˜¸ì¶œìž(caller)ì—게 ì „ë‹¬ëœë‹¤. 메서드 타입 =========== CSQL 언어는 í´ëž˜ìФ 메서드와 ì¸ìŠ¤í„´ìŠ¤ 메서드 ë‘ ê°€ì§€ íƒ€ìž…ì˜ ë©”ì„œë“œë¥¼ ì§€ì›í•œë‹¤. * **í´ëž˜ìФ 메서드** 는 í´ëž˜ìФ ê°ì²´ì—서 호출ë˜ëŠ” 메서드ì´ë‹¤. ì¼ë°˜ì 으로 í´ëž˜ìŠ¤ì˜ ìƒˆë¡œìš´ ì¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒì„±í•˜ê±°ë‚˜ 초기화하기 위하여 사용ëœë‹¤. ë˜í•œ í´ëž˜ìФ ì†ì„±ì— ì ‘ê·¼í•˜ê±°ë‚˜ ê°±ì‹ í•˜ê¸° ìœ„í•´ì„œë„ ì‚¬ìš©ë 수 있다. * **ì¸ìŠ¤í„´ìŠ¤ 메서드** 는 í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ì—서 호출ë˜ëŠ” 메서드ì´ë‹¤. ëŒ€ë¶€ë¶„ì˜ ì—°ì‚°ë“¤ì´ ì¸ìŠ¤í„´ìŠ¤ì—서 수행ë˜ê¸° ë•Œë¬¸ì— í´ëž˜ìФ 메서드보다 ë” ìžì£¼ 사용ëœë‹¤. 예를 들어 ì¸ìŠ¤í„´ìŠ¤ 메서드는 ì¸ìŠ¤í„´ìŠ¤ì˜ ì†ì„±ì„ 계산하거나 ê°±ì‹ í•˜ê¸° 위해 작성ë 수 있다. ì´ ë©”ì„œë“œëŠ” 메서드가 ì •ì˜ëœ í´ëž˜ìŠ¤ì˜ ì–´ë–¤ ì¸ìŠ¤í„´ìŠ¤ì—ì„œë„ í˜¸ì¶œë 수 ìžˆê³ , 메서드를 ìƒì†ë°›ì€ ì–´ë– í•œ 서브í´ëž˜ìŠ¤ì˜ ì¸ìŠ¤í„´ìŠ¤ì—ì„œë„ í˜¸ì¶œí• ìˆ˜ 있다. ë©”ì„œë“œì— ëŒ€í•œ ìƒì† ë²•ì¹™ì€ ì†ì„±ì— 대한 ìƒì† 법칙과 비슷하다. 서브í´ëž˜ìŠ¤ëŠ” 수í¼í´ëž˜ìŠ¤ë¡œë¶€í„° í´ëž˜ìŠ¤ì™€ ì¸ìŠ¤í„´ìŠ¤ 메서드를 ìƒì†ë°›ëŠ”ë‹¤. 서브í´ëž˜ìŠ¤ëŠ” 수í¼í´ëž˜ìŠ¤ë¡œë¶€í„° í´ëž˜ìŠ¤ì˜ ì •ì˜ë‚˜ ì¸ìŠ¤í„´ìŠ¤ ë©”ì„œë“œì˜ ì •ì˜ë¥¼ 따를 수 있다. 메서드 ì´ë¦„ì— ëŒ€í•œ ì¶©ëŒ í•´ê²° ê·œì¹™ì€ ì†ì„± ì´ë¦„ì— ëŒ€í•œ ì¶©ëŒ í•´ê²° 규칙과 같다. ì†ì„±ê³¼ 메서드 ìƒì† ì¶©ëŒì— 대한 추가ì ì¸ ì •ë³´ëŠ” :ref:`class-conflict-resolution` ì„ ì°¸ì¡°í•œë‹¤. 메서드 호출 =========== **CALL** ë¬¸ì€ ë°ì´í„°ë² ì´ìŠ¤ì— ì •ì˜ëœ 메서드를 호출하기 위해 사용ëœë‹¤. í´ëž˜ìФ 메서드, ì¸ìŠ¤í„´ìŠ¤ 메서드 ëª¨ë‘ **CALL** 문으로 í˜¸ì¶œì´ ê°€ëŠ¥í•˜ë‹¤. **CALL** 문으로 ì‹œìŠ¤í…œì— ì •ì˜ëœ 메서드를 호출하는 예는 :ref:`authorization-method` 를 ì°¸ê³ í•œë‹¤. :: CALL <method_call> ; <method_call> ::= method_name ([<arg_value> [{, <arg_value> } ...]]) ON <call_target> [<to_variable>] | method_name (<call_target> [, <arg_value> [{, <arg_value>} ...]] ) [<to_variable>] <arg_value> ::= any CSQL expression <call_target> ::= an object-valued expression <to_variable> ::= INTO variable | TO variable * *method_name*\ ì€ í´ëž˜ìŠ¤ì— ì •ì˜ëœ ë©”ì„œë“œì˜ ì´ë¦„ì´ê±°ë‚˜, ì‹œìŠ¤í…œì— ì •ì˜ëœ ë©”ì„œë“œì˜ ì´ë¦„ì´ë‹¤. 메서드는 하나 í˜¹ì€ ê·¸ ì´ìƒì˜ ì¸ìˆ˜ ê°’ì„ í•„ìš”ë¡œ 한다. ë©”ì„œë“œì— ì¸ìˆ˜ê°€ 없으면 빈 괄호를 사용해야 한다. * <*call_target*>\ ì€ í´ëž˜ìФ ì´ë¦„, 변수, í˜¹ì€ ë˜ ë‹¤ë¥¸ 메서드 호출(ê°ì²´ë¥¼ 반환하는)ì„ í¬í•¨í•˜ëŠ” ê°ì²´ ê°’ì˜ í‘œí˜„ì‹(object-valued expression)ì´ë‹¤. 만약 í´ëž˜ìФ ê°ì²´ì—서 ë™ìž‘하는 í´ëž˜ìФ 메서드를 í˜¸ì¶œí•˜ë ¤ë©´, <*call_target*> ì•žì— ë°˜ë“œì‹œ **CLASS** 키워드가 있어야 한다. ì´ ê²½ìš° í´ëž˜ìФ ì´ë¦„ì€ í´ëž˜ìФ 메서드가 ì •ì˜ëœ í´ëž˜ìŠ¤ì˜ ì´ë¦„ì´ì–´ì•¼ 한다. 만약 ì¸ìŠ¤í„´ìŠ¤ 메서드를 í˜¸ì¶œí•˜ë ¤ë©´, ì¸ìŠ¤í„´ìŠ¤ ê°ì²´ë¥¼ 나타내는 ì‹ì„ ì§€ì •í•´ì•¼ 한다. í´ëž˜ìФ 메서드나 ì¸ìŠ¤í„´ìŠ¤ ë©”ì„œë“œì— ì˜í•´ 반환ë˜ëŠ” ê°’ì€ ì„ íƒì 으로 <*to_variable*>\ ì— ì €ìž¥í• ìˆ˜ 있다. ì´ ë°˜í™˜ ë³€ìˆ˜ì˜ ê°’ì€ <*call_target*>\ ì´ë‚˜ <*arg_value*> 파ë¼ë¯¸í„°ì²˜ëŸ¼ **CALL** 문 ë‚´ì— ì‚¬ìš©ë 수 있다. * ì¤‘ì²©ëœ ë©”ì„œë“œ í˜¸ì¶œì€ ë‹¤ë¥¸ *method_call*\ ì´ ë©”ì„œë“œì˜ <*call_target*> ì´ê±°ë‚˜ <*arg_value*> ì¸ìˆ˜ì˜ 하나로 주어질 때 성립ëœë‹¤.