LXXIOracle 8 関数
以下ã®é–¢æ•°ã«ã‚ˆã‚Š Oracle8 ãŠã‚ˆã³ Oracle7 データベースã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒ
å¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚ã“ã®é–¢æ•°ã¯ã€Oracle8 Call-Interface (OCI8) を使用ã—
ã¾ã™ã€‚ã“ã®æ‹¡å¼µæ©Ÿèƒ½ã‚’使用ã™ã‚‹ã«ã¯ã€Oracle8 クライアントライブラリãŒ
å¿…è¦ã§ã™ã€‚
ã“ã®æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯ã€é€šå¸¸ã®Oracle拡張機能より柔軟性ãŒã‚りã¾ã™ã€‚
ã“ã®æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯ã€ã‚°ãƒãƒ¼ãƒãƒ«ãŠã‚ˆã³ãƒãƒ¼ã‚«ãƒ«ã® PHP 変数㮠Ocacle
プレースホルダーã¸ã®ãƒã‚¤ãƒ³ãƒ‰ã‚’サãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ã¾ãŸã€LOB,FILE,ROWID
を完全ã«ã‚µãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã€ãƒ¦ãƒ¼ã‚¶ãƒ¼å®šç¾©ã®å¤‰æ•°ãŒä½¿ç”¨å¯èƒ½ã§ã™ã€‚
ã“ã®æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’使用ã™ã‚‹å‰ã« Webデーモンã®ãƒ¦ãƒ¼ã‚¶ã§ã‚‚ã‚ã‚‹Oracle
ユーザã®Oracleç”¨ç’°å¢ƒå¤‰æ•°ãŒæ£ã—ãè¨å®šã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ä¸‹ã•ã„。
è¨å®šã•れã¦ã„ã‚‹å¿…è¦ãŒã‚る変数を以下ã«ç¤ºã—ã¾ã™ã€‚
ORACLE_HOME
ORACLE_SID
LD_PRELOAD
LD_LIBRARY_PATH
NLS_LANG
ORA_NLS33
Webサーãƒãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ç”¨ã«ç’°å¢ƒå¤‰æ•°ã‚’è¨å®šã—ãŸå¾Œã€Webサーãƒãƒ¼ã®ãƒ¦ãƒ¼ã‚¶
(nobody, www)をグループoracleã«è¿½åŠ ã—ã¦ä¸‹ã•ã„。
WebサーãƒãŒèµ·å‹•ã—ãªã„ã‹ã€èµ·å‹•時ã«ã‚¯ãƒ©ãƒƒã‚·ãƒ¥ã™ã‚‹å ´åˆ
ApacheãŒpthreadライブラリã«ãƒªãƒ³ã‚¯ã•れã¦ã„ã‚‹ã‹ã©ã†ã‹æ¬¡ã®ã‚ˆã†ã«ç¢ºèª
ã—ã¦ä¸‹ã•ã„。
libpthread ãŒã“ã®ä¸€è¦§ã«ãªã„å ´åˆã€Apacheã‚’å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å¿…è¦ãŒ
ã‚りã¾ã™ã€‚
例 1OCIã«é–¢ã™ã‚‹ãƒ’ント <?php
// by sergo@bacup.ru
// コマンドã®å®Ÿè¡Œã‚’é…å»¶ã•ã›ã‚‹ã«ã¯ã€ã‚ªãƒ—ション OCI_DEFAULT を使用ã—ã¦
// 下ã•ã„
OCIExecute($stmt, OCI_DEFAULT);
// (ã‚¯ã‚¨ãƒªçµæžœå–得後ã«)使用ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—
$result = OCIResult($stmt, $n);
if (is_object ($result)) $result = $result->load();
// INSERT ã¾ãŸã¯ UPDATE 命令ã®å ´åˆã«ä½¿ç”¨
$sql = "insert into table (field1, field2) values (field1 = 'value',
field2 = empty_clob()) returning field2 into :field2";
OCIParse($conn, $sql);
$clob = OCINewDescriptor($conn, OCI_D_LOB);
OCIBindByName ($stmt, ":field2", &$clob, -1, OCI_B_CLOB);
OCIExecute($stmt, OCI_DEFAULT);
$clob->save ("some text");
OCICommit($conn);
?> |
|
コマンドラインã§å®Ÿè¡Œã™ã‚‹ã®ã¨åŒæ§˜ãªæ‰‹æ³•ã«ã‚ˆã‚Šã€ã‚¹ãƒˆã‚¢ãƒ‰ãƒ—ãƒã‚·ãƒ¼ã‚¸ãƒ£
ã«ç°¡å˜ã«ã‚¢ã‚¯ã‚»ã‚¹å¯èƒ½ã§ã™ã€‚
例 2ストアドプãƒã‚·ãƒ¼ã‚¸ãƒ£ã®ä½¿ç”¨æ³• <?php
// by webmaster@remoterealty.com
$sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname',
'$lastname', '$company', '$address1', '$address2', '$city', '$state',
'$postalcode', '$country', :error_code );end;" );
// ã“ã®å‘½ä»¤ã¯ã€:address_id を入出力変数ã€:error_code を出力変数ã¨ã—ã¦
// ストアドプãƒã‚·ãƒ¼ã‚¸ãƒ£ sp_newaddress をコールã—ã¾ã™ã€‚
// ç¶šã„ã¦ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ãƒã‚¤ãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚
OCIBindByName ( $sth, ":address_id", $addr_id, 10 );
OCIBindByName ( $sth, ":error_code", $errorcode, 10 );
OCIExecute ( $sth );
?> |
|