関数・クラス解説
oci_new_descriptor
version:PHP 5, PHP 7, PECL OCI8 >= 1.1.0 (公式)空の新規 LOB あるいは FILE ディスクリプタを初期化する
公式リファレンス
書式
oci_new_descriptor ( resource $connection [, int $type = OCI_DTYPE_LOB ] ) : OCI-Lob
説明
ディスクリプタあるいは LOB ロケータを保持するリソースを確保します。
パラメータ
- connection
- oci_connect() あるいは oci_pconnect() が返す Oracle 接続 ID。
- type
- type として有効な値は、 OCI_DTYPE_FILE、OCI_DTYPE_LOB および OCI_DTYPE_ROWID です。
返値
成功した場合に新しい LOB あるいは FILE ディスクリプタ、 エラー時に FALSE を返します。
注意
注意: PHP バージョン 5.0.0 以前では、代わりに ocinewdescriptor() を使用しなければなりません。 まだこの名前を使用することができ、下位互換性のため oci_new_descriptor() への別名として残されていますが、 推奨されません。
サンプル
例1 oci_new_descriptor() の例
/* このスクリプトは HTML フォームからコールされるよう設計されています。
* また、$user, $passwor, $table, $where, $commitsizeがフォームから
* 渡されることを前提にしています。このスクリプトは、ROWID を用いて
* 選択された行を削除し、$commitsize 行毎にコミットします。
* (ロールバックがないので、注意して使用してください。)
*/
$conn = oci_connect($user, $password);
$stmt = oci_parse($conn, "select rowid from $table $where");
$rowid = oci_new_descriptor($conn, OCI_D_ROWID);
oci_define_by_name($stmt, "ROWID", $rowid);
oci_execute($stmt);
while (oci_fetch($stmt)) {
$nrows = oci_num_rows($stmt);
$delete = oci_parse($conn, "delete from $table where ROWID = :rid");
oci_bind_by_name($delete, ":rid", $rowid, -1, OCI_B_ROWID);
oci_execute($delete);
echo "$nrows\n";
if (($nrows % $commitsize) == 0) {
oci_commit($conn);
}
}
$nrows = oci_num_rows($stmt);
echo "$nrows deleted...\n";
oci_free_statement($stmt);
oci_close($conn);
/* このスクリプトは LOB カラムにファイルをアップロードする例を示します。
* LOBカラムにアップロードを行うこの例に関するフォームは、
*
<form action="upload.php" method="post" enctype="multipart/form-data">Upload file: <input type="file" name="lob_upload" /><br /><input type="submit" value="Upload" /> - <input type="reset" value="Reset" /></form>
} else {
// $lob_upload には、アップロードされたファイルの一時的なファイル名が含まれます
// 安全にアップロードしたい場合は、マニュアルの
// ファイルアップロードに関する節を参照ください
$conn = oci_connect($user, $password);
$lob = oci_new_descriptor($conn, OCI_D_LOB);
$stmt = oci_parse($conn, "insert into $table (id, the_blob)
values(my_seq.NEXTVAL, EMPTY_BLOB()) returning the_blob into :the_blob");
oci_bind_by_name($stmt, ':the_blob', $lob, -1, OCI_B_BLOB);
oci_execute($stmt, OCI_DEFAULT);
if ($lob->savefile($lob_upload)){
oci_commit($conn);
echo "Blob のアップロードは成功しました\n";
}else{
echo "Blob をアップロードできませんでした\n";
}
$lob->free();
oci_free_statement($stmt);
oci_close($conn);
}
例2 oci_new_descriptor() の例
/* 入力パラメータとして clob を含む PL/SQLストアドプロシージャを
* コールする。
* PL/SQL ストアドプロシージャのシグネチャは次の通り。
*
* PROCEDURE save_data
* Argument Name Type In/Out Default?
* ------------------------------ ----------------------- ------ --------
* KEY NUMBER(38) IN
* DATA CLOB IN
*
*/
$conn = oci_connect($user, $password);
$stmt = oci_parse($conn, "begin save_data(:key, :data); end;");
$clob = oci_new_descriptor($conn, OCI_D_LOB);
oci_bind_by_name($stmt, ':key', $key);
oci_bind_by_name($stmt, ':data', $clob, -1, OCI_B_CLOB);
$clob->write($data);
oci_execute($stmt, OCI_DEFAULT);
oci_commit($conn);
$clob->free();
oci_free_statement($stmt);
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール