動的パラメータを置�る場所

データ型ã?Œç°¡å?˜ã?«æ±ºå®šã?•れる場所ã?§ã?‚れã?°ã€?å¼?ã?®ä½•処ã?«ã?§ã‚‚動的パラメータを置ã??ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚
  1. BETWEENã?§ã?¯ã€?二ã?¤ç›®ã?¨ä¸‰ã?¤ç›®ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?®ã?©ã?¡ã‚‰ã?‹ã?Œå‹•的パラメータã?§ã?ªã?‘れã?°ã€?最åˆ?ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’動的パラメータã?¨ã?™ã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ 一ã?¤ç›®ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?®åž‹ã?¯ã€?残りã?®äºŒã?¤ã?Œå‹•的パラメータã?§ã?ªã?‘れã?°ã€?ã??れら動的ã?§ã?¯ã?ªã?„パラメータã?®åž‹ã‚‚ã?—ã??ã?¯ã??れらを統å?ˆã?—ã?Ÿåž‹ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚
    WHERE ? BETWEEN DATE('1996-01-01') AND ?
    -- 型�DATE����れ��。
  2. BETWEENã?®äºŒã?¤ç›®ã€?三ã?¤ç›®ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’動的パラメータã?¨ã?™ã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ ã?“れらã?®åž‹ã?¯å·¦è¾ºã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?¨å?Œã?˜åž‹ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚
    WHERE DATE('1996-01-01') BETWEEN ? AND ?
    -- 型�DATE����れ��。
  3. INã?§ã?¯ä¸€è¦§ã?®ã?†ã?¡ä¸€ã?¤ã?§ã‚‚動的パラメータã?§ã?¯ã?ªã?„é …ç›®ã?Œã?‚れã?°ã€?左辺ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’動的パラメータã?¨ã?™ã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ 左辺ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?®åž‹ã?¯ä¸€è¦§ã?«ã?‚ã‚‹å‹•çš„ã?§ã?ªã?„パラメータã?®é …ç›®ã?®åž‹ã‚’çµ±å?ˆã?—ã?Ÿåž‹ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚
    WHERE ? NOT IN (?, ?, 'Santiago')
    -- 型�CHAR����れ��。
  4. INã?§ã?¯ã€?最åˆ?ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?Œå‹•的パラメータã?§ã?¯ã?ªã?„ã?‹å‰?掲ã?®ãƒ«ãƒ¼ãƒ«ã?«ã‚ˆã‚Šã??ã?®åž‹ã?Œæ±ºã?¾ã‚‹å ´å?ˆã€?INã?®è¿°éƒ¨ã?®ä¸€è¦§ã?«å‹•的パラメータを置ã??ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ 値ã?®ä¸€è¦§ã?«ç½®ã?‹ã‚Œã?Ÿå‹•的パラメータã?®åž‹ã?¯ã€?左辺ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?®åž‹ã?¨å?Œã?˜ã‚‚ã?®ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚
    WHERE FloatColumn IN (?, ?, ?)
    -- 型�FLOAT����れ��。
  5. オペランドを2ã?¤æŒ?ã?¤æ¼”ç®—å­?ã?®ã€?+・-・*・/・AND・OR・<・>・ =・<・>・<=ã?¨>=ã?§ã?¯ã€?片方ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’動的パラメータã?¨ã?™ã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã?Œã€?両方を動的パラメータã?¨ã?™ã‚‹ã?“ã?¨ã?¯ã?§ã??ã?¾ã?›ã‚“。 動的パラメータã?®åž‹ã?¯ã‚‚ã?†ç‰‡æ–¹ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?®åž‹ã?¨ã?ªã‚Šã?¾ã?™ã€‚
    WHERE ? < CURRENT_TIMESTAMP
    -- 型�TIMESTAMP����れ��。
  6. CASTã?§ã?¯å¸¸ã?«å‹•的パラメータを利用ã?§ã??ã?¾ã?™ã€‚ã?“れã?«ã‚ˆã‚Šå‹•的パラメータã?«åž‹ã‚’与ã?ˆã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚
    CALL valueOf(CAST (? AS VARCHAR(10)))
  7. LIKE演算å­?ã?®ç‰‡æ–¹ã?‚ã‚‹ã?„ã?¯ä¸¡æ–¹ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã‚’動的パラメータã?¨ã?™ã‚‹ã?“ã?¨ã?Œå?¯èƒ½ã?§ã?™ã€‚ 左辺を動的パラメータã?¨ã?—ã?Ÿå ´å?ˆã€?ã??ã?®åž‹ã?¯å?³è¾ºã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?¨å?Œã?˜ã‚‚ã?®ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚ã?ªã?Šæœ€å¤§é•·ã?¯åž‹ã?®æœ€å¤§é•·ã?¨ã?ªã‚Šã?¾ã?™ã€‚å?³è¾ºã‚’動的パラメータã?¨ã?—ã?Ÿå ´å?ˆã€?左辺ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?®é•·ã?•ã?¨åž‹ã?Œé?©ç”¨ã?•れã?¾ã?™ã€‚ (LIKEã?§ã?¯CHARã?¨VARCHARã?®åž‹ã‚’利用ã?™ã‚‹äº‹ã?Œå?¯èƒ½ã?§ã?™ã€‚詳細ã?¯Concatenationã‚’å?‚ç…§ã?—ã?¦ã??ã? ã?•ã?„。)
    WHERE ? LIKE 'Santi%'
    --型�最大長�java.lang.Integer.MAX_VALUE�
    --CHAR����れ��。
  8. 動的パラメータã?®?ã?¯ã€?||演算å­?ã?®ç‰‡æ–¹ã?®å?´ã?«ã?®ã?¿ç½®ã??ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ ã?™ã?ªã‚?ã?¡"? || ?"ã?¯ä¸?å?¯èƒ½ã?§ã?™ã€‚||演算å­?ã?®ç‰‡å?´ã?«ã?‚ã‚‹?パラメータã?®åž‹ã?¯ã€?ã??ã?®å??対å?´ã?«ã?‚ã‚‹||演算å­?ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?®å¼?ã?®åž‹ã?«ã‚ˆã?£ã?¦æ±ºã?¾ã‚Šã?¾ã?™ã€‚ã‚‚ã?—å??対å?´ã?®å¼?ã?®åž‹ã?ŒCHARã?‚ã‚‹ã?„ã?¯VARCHARã?§ã?‚れã?°ã€?動的パラメータã?®åž‹ã?¯ã??ã?®åž‹ã?®æœ€å¤§é•·ã?®VARCHARã?§ã?™ã€‚ ã‚‚ã?—å??対å?´ã?®å¼?ã?®åž‹ã?ŒCHAR FOR BIT DATAã?‚ã‚‹ã?„ã?¯VARCHAR FOR BIT DATAã?§ã?‚れã?°ã€?動的パラメータã?®åž‹ã?¯ã??ã?®æ–¹ã?®æœ€å¤§é•·ã?®VARCHAR FOR BIT DATAã?§ã?™ã€‚
    SELECT BITcolumn || ?
    FROM UserTable
    -- 型�BITcolumn���最大長�CHAR FOR BIT DATA��り��。
  9. æ?¡ä»¶å¼?ã?§ã?¯?ã?§è¡¨ã?•れる動的パラメータã?®åˆ©ç”¨ã?Œå?¯èƒ½ã?§ã?™ã€‚å¼?ã?®æœ€åˆ?ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?«ç½®ã?‹ã‚Œã?Ÿå‹•的パラメータã?®åž‹ã?¯çœŸå?½åž‹ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚ å¼?ã?®äºŒã?¤ç›®ã?‚ã‚‹ã?„ã?¯ä¸‰ã?¤ç›®ã?®ã?†ã?¡ã€?片方ã? ã?‘を動的パラメータã?¨ã?™ã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚動的パラメータã?®åž‹ã?¯ã€?ã‚‚ã?†ç‰‡æ–¹ã?®åž‹ã?¨å?Œã?˜ã‚‚ã?®ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚(ã?¤ã?¾ã‚Šå¯¾å¿œã?™ã‚‹ã?®ã?¯ä¸‰ã?¤ç›®ã?¨äºŒã?¤ç›®ã?®ã‚ªãƒšãƒ©ãƒ³ãƒ‰ã?¨ã?ªã‚Šã?¾ã?™ã€‚)
    SELECT c1 IS NULL ? ? : c1
    -- ã?“ã?®ä¾‹ã?§ã?¯å®Ÿè¡Œæ™‚ã?«æ—¢å®šå€¤ã‚’与ã?ˆã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚
    -- ã??ã?®å‹•的パラメータã?®åž‹ã?¯c1ã?¨å?Œã?˜åž‹ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚
    -- :ã?®ä¸¡å?´ã?«å‹•的パラメータを置ã??ã?“ã?¨ã?¯ã?§ã??ã?¾ã?›ã‚“。
    
  10. INSERTæ–‡ã?®valuesã?®ä¸€è¦§ã‚„selectã?®ä¸€è¦§ã?«ã€?動的パラメータを置ã??ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ 動的パラメータã?®åž‹ã?¯å¯¾è±¡åˆ—ã?®åž‹ã?¨å?Œã?˜åž‹ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚
    INSERT INTO t VALUES (?)
    -- 動的パラメータ�型��
    -- t表�唯一��列���型��り��。
    INSERT INTO t SELECT ?
    FROM t2
    -- �れ�����。
  11. 副����比較�れる?パラメータ��副�����択�れ���型を�り��。 例を挙���。
    SELECT *
    FROM tab1
    WHERE ? = (SELECT x FROM tab2)
    
    SELECT *
    FROM tab1
    WHERE ? = ANY (SELECT x FROM tab2)
    -- 両方�場������動的パラメータ�型��
    -- tab2.x���型����れ��。
  12. UPDATEæ–‡ã?®å€¤ã?«å¯¾ã?—ã?¦å‹•的パラメータを置ã??ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚動的パラメータã?®åž‹ã?¯ã€?対照表ã?®åˆ—ã?®åž‹ã?¨å?Œã?˜ã‚‚ã?®ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚
    UPDATE t2 SET c2 =? -- c2���型����れ��。
  13. �一オペランドを�る-や+�演算����動的パラメータを利用�能��。 例を挙���。
    CREATE TABLE t1 (c11 INT, c12 SMALLINT, c13 DOUBLE, c14 CHAR(3))
    SELECT * FROM t1 WHERE c11 BETWEEN -? AND +?
    -– 両方��一オペランドを�る演算��型��文脈�沿��INT��り��。
    -- (�����c11�INT�����一オペランドを�る演算�もINT�型を�り��。)
    
  14. LENGTHã?«ã?¦ã€?動的パラメータを利用å?¯èƒ½ã?§ã?™ã€‚ã??ã?®åž‹ã?¯æœ€å¤§é•·ã?®VARCHARã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚
    SELECT LENGTH(?)
  15. 定�比較
    ? = SOME (SELECT 1 FROM t)
    -- �れ�有効��。動的�パラメータ�型�INTEGER����れ��。
    1 = SOME (SELECT ? FROM t)
    -- �れ�有効��。動的�パラメータ�型�INTEGER����れ��。
  16. ISå¼?ã?®å·¦è¾ºã?«å‹•的パラメータを置ã??ã?“ã?¨ã?Œã?§ã??ã€?ã??ã?®åž‹ã?¯çœŸå?½åž‹ã?¨ã?¿ã?ªã?•れã?¾ã?™ã€‚

å‹•çš„ã?ªãƒ‘ラメータã?®åž‹ã?Œæ±ºã?¾ã‚‹å¼?ã?¯ä¸€èˆ¬çš„ã?«ã€?ã??ã?®å‹•的パラメータを定数ã?«ç½®ã??æ?›ã?ˆã?¦ã€?ã?©ã?®ã‚ˆã?†ã?ªå ´æ‰€ã?«ã‚‚ç½®ã??ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚

関連資料
動的パラメータ�例