CALL ʸ ¤È EXECUTE ¥³¥Þ¥ó¥É¤Î°ã¤¤
CALL ¤Ï Oracle 9i ¤«¤é¥µ¥Ý¡¼¥È¤µ¤ì¤¿ ɸ½àSQL ¤Î¥³¥Þ¥ó¥É¤Ç¤¢¤ê¡¢EXECUTE ¤ÏµìÍ褫¤é¤¢¤ë SQL*Plus ¥³¥Þ¥ó¥É ¤Ç¤¢¤ë¡£¡Ê¢¨ PL/SQL ¤Î¥³¥Þ¥ó¥É¤Ç¤â¤Ê¤¤¡Ë
ÁÐÊý¤È¤â¥Õ¥¡¥ó¥¯¥·¥ç¥ó¤ä¥×¥í¥·¡¼¥¸¥ã¤Î¼Â¹Ô¤Ë»ÈÍѤ¹¤ë¤¬¡¢¤½¤Î»ÅÍͤϰۤʤ꿷¤·¤¯ÍѰդµ¤ì¤¿ CALL ¤¬Îɤ¤¤È¤¤¤¦¤â¤Î¤Ç¤â¤Ê¤¤¤È¤¤¤¨¤ë¡£
Oracle 10g ¤Þ¤Ç¤Ï CALL ¤Î°ú¿ô¤Ï°ÌÃÖɽµË¡¤Î¤ß¤Ë¸ÂÄꤵ¤ì¤Æ¤¤¤¿¤¬ Oracle 11g ¤«¤é¤Ï °ÌÃÖɽµË¡¤ª¤è¤ÓξÊý¤òÊ»ÍѤ·¤¿º®¹çɽµ¤â²Äǽ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
Ʊ»þ¤Ë SQL ¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤â °ÌÃÖɽµË¡¤Èº®¹çɽµ¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤¿¡£
EXECUTE ¤Î¼Â¹ÔÎã
EXECUTE ¥³¥Þ¥ó¥É¤Ï ¥Æ¥¥¹¥È¤ò PL/SQL ¥Ö¥í¥Ã¥¯¤ËÊÑ´¹¤·¤Æ¤«¤é¼Â¹Ô¤¹¤ë¡£
EXECUTE plsql_text; ¤Ï BEGIN plsql_text; END; ¤ËÊÑ´¹¤·¤Æ¤«¤é¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£
SQL> variable :num number;
SQL> EXECUTE :num := function_hoge('¤¢¤¤¤¦', TRUE);
¢ ÊÑ´¹
BEGIN :num := function_hoge('¤¢¤¤¤¦', TRUE); END;
¢ ¼Â¹Ô
PL/SQL¥×¥í¥·¡¼¥¸¥ã¤¬Àµ¾ï¤Ë´°Î»¤·¤Þ¤·¤¿¡£
SQL> print :num
...
CALL ¤Î¼Â¹ÔÎã
CALL ¤Ë¤è¤ë¸Æ¤Ó½Ð¤·¤Ç SQL ¤È¤·¤Æ¡¢¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ BOOLEAN ·¿ (TRUE/FALSE) ¤ò PL/SQL ¤Î¥Õ¥¡¥ó¥¯¥·¥ç¥ó¤Ë»ÈÍѤ¹¤ë¤Èޥޥޥ
SQL> variable :num number;
SQL> CALL function_hoge('¤¢¤¤¤¦', TRUE) INTO :num ;
*
¹Ô1¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£:
ORA-06553: PLS-306: 'FUNCTION_HOGE'¤Î¸Æ½Ð¤·¤Ç¡¢°ú¿ô¤Î¿ô¤Þ¤¿¤Ï·¿¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£
¤Î¤è¤¦¤Ë¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¡£
¡ÊͽÁۤǤ¢¤ë¤¬¡ËSQL ¤Î¥Ñ¡¼¥µ¡¼·Ðͳ(¢¨) ¤È PL/SQL ¥Ñ¡¼¥µ¡¼·Ðͳ¤Ç¼Â¹Ô¤µ¤ì¤ëº¹¤Î¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ë¤È»×¤ï¤ì¤ë¡£
(¢¨) CALL ·Ðͳ¤Ç PL/SQL ¤ËÁȤ߹þ¤Þ¤ì¤Æ¤¤¤Ê¤¤´Ø¿ô¡ÊÎ㤨¤Ð ORA_HASH¡Ë¤ò¸Æ¤Ó½Ð¤·¤Æ¤âÍøÍѤǤ¤Ê¤¤¤³¤È¤«¤é SQL ¤È¤·¤Æ¼Â¹Ô¤Ï¤µ¤ì¤Æ¤¤¤Ê¤¤¡£