• 検索結果がありません。

Symfoware(R) Server Perlドライバユーザーズガイド

N/A
N/A
Protected

Academic year: 2021

シェア "Symfoware(R) Server Perlドライバユーザーズガイド"

Copied!
157
0
0

読み込み中.... (全文を見る)

全文

(1)

Symfoware

Server

(2)

まえがき

i

まえがき

本書の目的

本 書 は 、 Perl か ら Symfoware/RDB を ア ク セ ス す る た め の 機 構 で あ る DBI (DataBase Interface)・Database Driver for Symfoware(以降、DBD::Symfoware と呼びます)のユーザーズガイドです。

本書の読者

本書は、PerlからSymfoware/RDBのデータベースをアクセスする方に読んでい ただくように書かれています。 本書を読むには、以下に示す知識が必要です。 ● Symfoware/RDBの機能およびデータベースの概要 ● SQL文に関する知識 ● Perlに関する基本的な知識

本書の構成

第1章 Perl DBI・DBD::Symfowareの概要

Perl、DBI、DBD::Symfowareの概要について説明しています。

第2章 Perl DBI・DBD::Symfowareの導入

Perl、DBI、DBD::Symfowareの導入方法について説明しています。

第3章 Perl DBI・DBD::Symfowareの使用

PerlからSymfoware/RDBのデータベースをアクセスする方法について説明して います。

第4章 Perl DBI・DBD::Symfowareの仕様

DBI・DBD::Symfowareを用いてSymfoware/RDBのデータベースをアクセスすると きの仕様について説明しています。

第5章 RDBコマンドの呼び出し

Perlのコマンド呼び出し機能を用いてRDBコマンドを呼び出す方法について説 明しています。

第6章 注意事項

PerlからSymfoware/RDBのデータベースをアクセスするときの注意事項につい て説明しています。

付録A connect、connect_cachedのパラメタの記述形式

connect、connect_cachedで指定するパラメタの記述形式について説明してい ます。

付録B DBD::Symfowareの修正履歴

DBD::Symfowareのソースの修正履歴について説明しています。

(3)

まえがき ii

付録C DBD::Symfowareのソース構成

DBD::Symfowareのソースの構成について説明しています。

用語集

本書で使用する用語の意味を定義しています。

本書の位置づけ

Symfoware Serverの関連マニュアルと、本書中での表記について以下に示しま す。Symfoware Serverのマニュアルは、製品のCD-ROMに添付されています。 本書での表記 マニュアル名

スタートガイド サーバ編 FUJITSU Symfoware Server スタートガイド サー バ編

RDBユーザーズガイド 応用プログラム開発編

FUJITSU Symfoware Server RDBユーザーズガイド 応用プログラム開発編

RDBユーザーズガイド データベース定義編

FUJITSU Symfoware Server RDBユーザーズガイド データベース定義編

SQLリファレンスガイド FUJITSU Symfoware Server SQLリファレンスガイ ド RDB管理者ガイド(注) Symfoware Server RDB管理者ガイド 注) Symfoware Serverの製品のOSとVLにより参照マニュアルが異なります。

Symfoware/RDBが出力するメッセージの処置を参照する

【SolarisおよびLinuxの場合】 Symfoware/RDBが出力するメッセージの意味および利用者の処置は、RDBコマン ド(rdbprtmsgコマンド)を利用して参照できます。 【Windows NT/2000/XPの場合】 Windows NT/2000/XPのオンラインヘルプで参照できます。

注意事項

本書の中でマニュアル作成時点でのWebのURL(Uniform Resource Locator)を 記載していますが、URLがなくなっている場合があります。 本書の中にマニュアル作成時点での最新のソフトウェアのバージョンを記載 していますが、現在ではさらに最新のバージョンが提供されている場合があり ます。

本書の対応する製品

【Solarisの場合】 ● Perl 5.6.1 ● DBI 1.30 ● DBD::Symfoware 1.00 ● GNUzip 1.2.4 ● GNUgcc 2.95.2

(4)

まえがき iii 【Linuxの場合】 ● OSに同梱されているPerl(Perl 5.6.1) ● DBI 1.30 ● DBD::Symfoware 1.00

● Symfoware Server Standard Edition V5.0L10 以降 【Windowsの場合】

● Active Perl 5.6.1

● DBI 1.30、または、Active Stateが公開しているDBI ● DBD::Symfoware 1.00 ● Microsoft Visual C++6.0

説明用モデルについて

本書で使用するデータベースは架空のものであり、現実のものとは何の関係も ありません。

略称

本書で使用する略称を以下に示します。 略称 正式名称

Windows Microsoft® Windows® 95 operating system、 Microsoft® Windows® 98 operating system、 Microsoft® Windows® 98 Second Edition、 Microsoft® Windows® Millennium Edition、

Microsoft® Windows NT® Server, Enterprise Server Edition、 Microsoft® Windows NT® Server, Terminal Server Edition、 Microsoft® Windows NT® Server network operating system、 Microsoft® Windows NT® Workstation operating system、 Microsoft® Windows® 2000 Professional operating system、 Microsoft® Windows® 2000 Advanced Server operating system、 Microsoft® Windows® 2000 Server operating system、

Microsoft® Windows® 2000 Professional operating system、 Microsoft® Windows® XP Professional および

Microsoft® Windows® XP Home Edition Windows 95/98/Me/XP Microsoft® Windows® 95 operating system、

Microsoft® Windows® 98 operating system、 Microsoft® Windows® 98 Second Edition、 Microsoft® Windows® Millennium Edition および Microsoft® Windows® XP Home Edition

Windows NT/2000/XP Microsoft® Windows NT® Server, Enterprise Server Edition、 Microsoft® Windows NT® Server, Terminal Server Edition、 Microsoft® Windows NT® Server network operating system、 Microsoft® Windows NT® Workstation operating system、 Microsoft® Windows® 2000 Professional operating system、 Microsoft® Windows® 2000 Advanced Server operating system、 Microsoft® Windows® 2000 Server operating system、

Microsoft® Windows® 2000 Professional operating system および Microsoft® Windows® XP Professional

(5)

まえがき

iv

略称 正式名称

Microsoft® Windows® 98 operating system および Microsoft® Windows® 98 Second Edition

Windows 2000/XP Microsoft® Windows® 2000 Professional operating system、 Microsoft® Windows® 2000 Advanced Server operating system、 Microsoft® Windows® 2000 Server operating system、

Microsoft® Windows® 2000 Professional operating system および Microsoft® Windows® XP Professional

Windows Me/XP Microsoft® Windows® Millennium Edition および Microsoft® Windows® XP Home Edition

商標

Perlは、米国のLarry Wallの著作です。 DBIは、アイルランドのTim Bunceの著作です。

GNUgccは、Free Software Foundation, Inc.の著作です。 GNUzipは、Free Software Foundation, Inc.の著作です。

Microsoft 、 Windows 、 Windows 95/98/Me/NT/2000/XP は 、 米 国 Microsoft Corporationの米国およびそのほかの国での登録商標です。

UNIXは、The Open Groupの米国ならびにほかの国での登録商標です。 Solarisは、米国Sun Microsystems, Inc.の登録商標です。

Linuxは、Linus Torvalds氏の米国およびその他の国における登録商標あるい は商標です。 Symfowareは、富士通株式会社の登録商標です。 そのほか、本書に記載されている会社名および製品名は、それぞれ各社の商標 または登録商標です。 なお、本マニュアルでは、®、TM表記を省略しています。 平成14年11月 平成14年11月 初版 告知文 [高度な安全性が要求される用途への使用について] 本製品は、一般事務用、パーソナル用、家庭用、通常の産業等の一般的用途を 想定して開発・設計・製造されているものであり、原子力施設における核反応 制御、航空機自動飛行制御、航空交通管制、大量輸送システムにおける運行制 御、生命維持のための医療用機器、兵器システムにおけるミサイル発射制御な ど、極めて高度な安全性が要求され、仮に当該安全性が確保されない場合、直 接生命・身体に対する重大な危険性を伴う用途(以下「ハイセイフティ用途」 という)に使用されるよう開発・設計・製造されたものではありません。 お客さまは本製品を必要な安全性を確保する措置を施すことなくハイセイフ ティ用途に使用しないでください。また、お客さまがハイセイフティ用途に本 製品を使用したことにより発生する、お客様または第三者からのいかなる請求 または損害賠償に対しても富士通株式会社およびその関連会社は一切責任を

(6)

まえがき

v 負いかねます。

(7)
(8)

目次 vii

目次

第1章 PHP Symfowareの概要 ... 1 1.1 PHPとは... 2 1.2 PHP Symfowareとは ... 3 第2章 PHP Symfowareの導入 ... 5 2.1 SolarisおよびLinuxの場合の導入方法 ... 6 2.1.1 インストール済みパッケージのアンインストール ... 6 2.1.2 アーカイバのインストール ... 7 2.1.3 コンパイラのインストール ... 9 2.1.4 Symfowareのインストール ... 10 2.1.5 Apacheのインストール ... 11 2.1.6 PHPのビルドで使用するコマンドのインストール ... 11 2.1.7 PHPのインストール ... 13 2.1.8 PHP Symfowareのインストール ... 14 2.1.9 Apacheのセットアップ ... 18 2.2 Windowsの場合の導入方法 ... 21 2.2.1 エディタのインストール ... 21 2.2.2 アーカイバのインストール ... 21 2.2.3 Symfowareのインストール ... 21 2.2.4 Apacheのインストール ... 22 2.2.5 PHPのインストール ... 22 2.2.6 PHP Symfowareのインストール ... 23 2.2.7 Apacheのセットアップ ... 26 第3章 PHP Symfowareの使用 ... 29 3.1 PHPスクリプトの作成および実行 ... 30 3.2 PHP Symfowareの規約 ... 32 3.2.1 PHP Symfowareの仕様 ... 32 3.2.2 変数の規約 ... 32 3.2.3 真、偽 ... 32 3.2.4 SQL文の規約 ... 33 第4章 Symfoware関数の仕様 ... 35 4.1 Symfoware関数の概要 ... 36 4.1.1 Symfoware関数のスクリプト例 ... 36 4.2 Symfoware関数 ... 38 4.2.1 symfoware_autocommit ... 38 4.2.2 symfoware_binmode ... 39 4.2.3 symfoware_close ... 41 4.2.4 symfoware_close_all ... 41 4.2.5 symfoware_columnprivileges ... 41

(9)

目次 viii 4.2.6 symfoware_columns ... 42 4.2.7 symfoware_commit ... 44 4.2.8 symfoware_connect ... 45 4.2.9 symfoware_cursor ... 46 4.2.10 symfoware_do ... 47 4.2.11 symfoware_error ... 47 4.2.12 symfoware_errormsg ... 49 4.2.13 symfoware_exec ... 49 4.2.14 symfoware_execute ... 50 4.2.15 symfoware_fetch_array ... 51 4.2.16 symfoware_fetch_into ... 52 4.2.17 symfoware_fetch_object ... 54 4.2.18 symfoware_fetch_row ... 55 4.2.19 symfoware_field_len ... 57 4.2.20 symfoware_field_name ... 58 4.2.21 symfoware_field_num ... 58 4.2.22 symfoware_field_precision ... 59 4.2.23 symfoware_field_scale ... 59 4.2.24 symfoware_field_type ... 60 4.2.25 symfoware_foreignkeys ... 60 4.2.26 symfoware_free_result ... 60 4.2.27 symfoware_gettypeinfo ... 62 4.2.28 symfoware_isnull ... 65 4.2.29 symfoware_longreadlen ... 65 4.2.30 symfoware_next_result ... 67 4.2.31 symfoware_num_fields ... 67 4.2.32 symfoware_num_rows ... 67 4.2.33 symfoware_pconnect ... 69 4.2.34 symfoware_prepare ... 70 4.2.35 symfoware_primarykeys ... 71 4.2.36 symfoware_procedurecolumns ... 72 4.2.37 symfoware_procedures ... 75 4.2.38 symfoware_result ... 77 4.2.39 symfoware_result_all ... 77 4.2.40 symfoware_rollback ... 78 4.2.41 symfoware_setoption ... 79 4.2.42 symfoware_specialcolumns ... 79 4.2.43 symfoware_statistics ... 79 4.2.44 symfoware_tableprivileges ... 79 4.2.45 symfoware_tables ... 79

第5章 PEAR for Symfowareの仕様 ... 83

5.1 PEAR for Symfowareの概要 ... 84

5.1.1 PEARの特徴 ... 84

(10)

目次 ix 5.2 DBクラスのインクルード ... 86 5.2.1 require_once( "DB.php" ) ... 86 5.3 DBクラス... 87 5.3.1 connect ... 87 5.3.2 disconnect ... 89 5.3.3 isWarning ... 89 5.3.4 isError ... 90 5.3.5 quote ... 90 5.3.6 provides ... 91 5.3.7 setFetchMode ... 92 5.3.8 prepare ... 94 5.3.9 execute ... 94 5.3.10 executeMultiple ... 96 5.3.11 query ... 97 5.3.12 limitQuery ... 98 5.3.13 getOne ... 99 5.3.14 getRow ... 100 5.3.15 getCol ... 102 5.3.16 getAssoc ... 103 5.3.17 getAll ... 105 5.3.18 affectedRows ... 108 5.3.19 nextId ... 109 5.3.20 createSequence ... 109 5.3.21 dropSequence ... 109 5.3.22 tableInfo ... 109 5.3.23 getListOf ... 110 5.3.24 autoCommit ... 110 5.3.25 commit ... 111 5.3.26 rollback ... 111 5.3.27 errorNative ... 111 5.4 DB_Resultクラス ... 114 5.4.1 fetchRow ... 114 5.4.2 fetchInto ... 116 5.4.3 numCols ... 117 5.4.4 numRows ... 118 5.4.5 nextResult ... 119 5.4.6 free ... 119 5.5 DB_Errorクラス ... 121 5.5.1 getMessage ... 121 5.5.2 toString ... 121 5.6 DB_Warningクラス ... 122 5.7 Cacheクラス ... 123

第6章 PHPlib for Symfowareの仕様 ... 125

(11)

目次 x 6.1.1 PHPlibの特徴 ... 126 6.1.2 PHPlibで使用するファイル ... 126 6.2 PHPlibの使用例 ... 130 6.2.1 セション機能の使用例 ... 130 6.2.2 認証機能の使用例 ... 130 6.2.3 パーミッション管理機能の使用例 ... 132 6.2.4 ユーザ変数機能の使用例 ... 133 第7章 PHP Symfowareの環境設定 ... 135 7.1 PHP動作環境ファイル ... 136 7.2 パラメタの詳細 ... 137 7.2.1 symfoware.default_db ... 137 7.2.2 symfoware.default_user ... 137 7.2.3 symfoware.default_pw ... 137 7.2.4 symfoware.allow_persistent ... 138 7.2.5 symfoware.check_persistent ... 138 7.2.6 symfoware.max_persistent ... 138 7.2.7 symfoware.max_links ... 139 7.2.8 symfoware.defaultlrl ... 139 7.2.9 symfoware.defaultbinmode ... 139 第8章 RDBコマンドの呼び出し ... 141 8.1 RDBコマンドの呼び出し方法 ... 142 8.2 RDBコマンドの呼び出し例 ... 143 8.2.1 systemを用いたRDBコマンドの呼び出し ... 143 8.2.2 execを用いたRDBコマンドの呼び出し ... 143 8.2.3 popenを用いたRDBコマンドの呼び出し ... 144 第9章 注意事項 ... 145 9.1 PHP Symfowareの制限 ... 146 9.2 RDBコマンドの呼び出しの制限 ... 147 9.3 マルチバイト文字列の注意 ... 148 9.3.1 マルチバイト文字列の問題 ... 148 9.3.2 UTF-8 ... 149 9.3.3 マルチバイト対応関数 ... 149 9.3.4 シフトJIS対応PHP ... 150 付録A connect、pconnectのパラメタの記述形式 ... 151 付録B PHP Symfowareの修正履歴 ... 153 付録C PHP Symfowareのソースの構成 ... 155

(12)

第1章

Perl DBI・DBD::Symfowareの概

本章では、Perl、DBI、DBD::Symfowareの概要について説明します。

1.1 Perlとは

(13)

第1章 Perl DBI・DBD::Symfowareの概要

2

1.1

Perlとは

Perlについて説明します。

Perlとは

Perl(Practical Extraction and Report Language:実用データ取得レポー ト作成言語)は、インタプリタ型のプログラミング言語です。

Perlスクリプト、Perlモジュール、クラスインタフェース

Perlが処理するプログラムのことをPerlスクリプトと呼びます。 Perlスクリプトから関数インタフェースで外部プログラムを呼び出すこと ができます。外部プログラムのことをPerlモジュールと呼びます。 Perl 5でオブジェクト思考の概念が追加され、クラスインタフェースでプロ グラムの呼び出しができるようになりました。

Perlの公開形態

CPAN(Comprehensive Perl Archive Network:統合Perlアーカイブネットワ ーク)が、PerlソースをWebで公開しています。

PerlはGPL(GNU General Public License:一般公的使用承諾)と呼ばれる ライセンスに基づいて公開されています。動作保証がないといったGPLの各種 条件を承諾することにより、無償でPerlを使用することができます。 SolarisマシンにPerlを導入する場合、CPANが公開しているPerlソースをビ ルドしてインストールするのが一般的です。 LinuxマシンにはPerlがインストールされています。 WindowsマシンにPerlを導入する場合、CPANが公開しているPerlソースをビ ルドすることはできますが、Windowsではソースをビルドするということが一 般的ではありません。Active Stateが、CPANで公開されているPerlソースを元 に、Windowsの文化(たとえば、インストーラ形式による提供、拡張子の関連 付け)に合わせた機能を付加したActive Perlを開発し、公開しています。よ って、Active Perlをインストールするのが一般的です。

(14)

1.2 DBI、DBD::Symfowareとは 3

1.2

DBI、DBD::Symfowareとは

DBI、DBD::Symfowareについて説明します。

従来のデータベースのアクセス

これまで、各データベースベンダは、データベースベンダごとにSQL文を処 理するインタプリタ型の言語や、SQL文をC言語などのプログラミング言語に埋 め込むといったデータベースのアクセスの手段を提供してきました。データベ ースのアクセスの手段は、各データベースベンダによって統一しておらず、完 全な互換は保証できませんでした。

Perlのデータベースのアクセス

Perlスクリプトからデータベースをアクセスするために、Perlの有志によっ て各データベースベンダ固有のデータベースアクセス処理を行う関数インタ フェースのPerlモジュールが用意されました。 複数のデータベースベンタのデータベースをアクセスする場合は、複数の関 数インタフェースを使用することになるという欠点があります。

Perlのデータベースアクセスの抽象化

複数のデータベースベンダのデータベースのアクセスを1つのクラスインタ フェースで行うために、DBI(Database Interface:データベースインタフェ ース)と呼ばれるクラスインタフェースのPerlモジュールが用意されました。 DBIの処理を実装するために、各データベースベンダごとにDBD(Database Driver:データベースドライバ)と呼ばれるPerlモジュールを用意する必要が あります。DBDでは各データベースベンダ固有のデータベースアクセス処理を 行います。

DBI、DBD::Symfoware

Symfoware/RDB用のDBDである“DBD::Symfoware”を提供します。これにより、 PerlスクリプトからSymfoware/RDBのアクセスを可能にします。

DBD::Symfowareの公開形態

Perl の 公 開 形 態 と 同 様 に 、 DBD::Symfoware は GPL ( GNU General Public License:一般公的使用承諾)と呼ばれるライセンスに基づいて公開します。 動 作 保 証 が な い と い っ た GPL の 各 種 条 件 を 承 諾 す る こ と に よ り 、 無 償 で DBD::Symfowareを使用することができます。

(15)

第1章 Perl DBI・DBD::Symfowareの概要 4 DBD::Symfowareは充分なテストを行った上でリリースしていますが、Perl、 DBI、DBD::Symfowareの最終的な動作保証については、ご自身の責任でお願い します。

対話ツール dbish

DBIにはdbishと呼ばれる対話的にSQL文を実行するコマンドが添付されてい ます。dbishを用いることにより、Perlスクリプトを作成しなくても簡単なデ ータベースのアクセスを行うことができます。

(16)

第2章

Perl DBI・DBD::Symfowareの導

本章では、Perl、DBI、DBD::Symfowareの導入について説明します。

2.1 SolarisおよびLinuxの場合の導入方法 2.2 Windowsの場合の導入方法

(17)

第2章 Perl DBI・DBD::Symfowareの導入 6

2.1

SolarisおよびLinuxの場合の導入方

SolarisおよびLinuxでの、Perl、DBI、DBD::Symfowareの導入方法について 説明します。 各ソフトウェアのデフォルトの設定で説明します。デフォルト以外の設定を 行った場合は、適宣、読み替えてください。

2.1.1

インストール済みパッケージのアンインス

トール

インストール済みパッケージのアンインストールについて説明します。

Solarisの場合のインストール済みパッケージのアンインストール

Solarisの場合、インストール済みパッケージのアンインストールの作業は 不要です。

Linuxの場合のインストール済みパッケージ

すでにインストールされているDBIは古いことが多く、すでにインストール されているDBIを使用する場合、最新にて追加された機能を使用することがで きないことがあります。 また、DBD::Symfowareは、DBI 1.20で規定された内部インタフェースを使用 していますので、DBI 1.20未満でDBD::Symfowareを使用することはできません。 よって、すでにインストールされているDBIはアンインストールし、最新の DBIをインストールすることを推奨します。

Linuxの場合のインストール済みパッケージのアンインストール

1. スーパ・ユーザでログインしてください。 2. 以下のコマンドでDBIがインストールされていることを確認してくださ い。

rpm -qa │ grep perl-DBI

3. 以下のコマンドでDBIをアンインストールしてください。 rpm -qa │ grep perl-DBI │ xargs rpm -e

4. アンインストールで、“エラー: これらのパッケージを削除すると依存 関係を破壊します:”というエラーが発生することがあります。このと き、3.と同様の操作で依存関係にあるパッケージを削除するか、以下の コマンドで依存関係にあるパッケージを無視してDBIをアンインストー ルしてください。

rpm -qa │ grep perl-DBI │ xargs rpm -e --nodeps

5. アンインストールで、“cannot remove /絶対パス名 - directory not empty”というエラーが発生することがありますが、アンインストール

(18)

2.1 SolarisおよびLinuxの場合の導入方法 7 自体は成功しています。ディレクトリ配下のファイルは、必要に応じて バックアップしてください。 6. 以下のコマンドでDBIがインストールされていないことを確認してくだ さい。

rpm -qa │ grep perl-DBI

2.1.2

アーカイバのインストール

アーカイバのインストールについて説明します。

Solaris2.6の場合のアーカイバのインストール

1. Solaris Package Archive

(http://www.ibiblio.org/pub/packages/solaris/sparc/)から、アー カイバパッケージのアーカイブ (GNUzip.1.2.4.SPARC.Solaris.2.6.pkg.tar)を入手してください。 2. スーパ・ユーザでログインしてください。 3. アーカイバパッケージのアーカイブを任意の作業ディレクトリ(ここで は/tmpと仮定します)に置いてください。 4. 以下のコマンドで任意の作業ディレクトリに移動してください。 cd /tmp 5. 以下のコマンドで任意の作業ディレクトリにアーカイバパッケージを 展開してください。 tar xvf GNUzip.1.2.4.SPARC.Solaris.2.6.pkg.tar 6. 以下のコマンドでアーカイバパッケージをインストールしてください。 pkgadd -d . GNUzip 7. 環境変数PATHに/usr/local/bin、MANPATHに/usr/local/manを追加して ください。

Solaris7の場合のアーカイバのインストール

1. Solaris Package Archive

(http://www.ibiblio.org/pub/packages/solaris/sparc/)から、アー カイバパッケージのアーカイブ (GNUzip.1.2.4.SPARC.32bit.Solaris.7.pkg.tar)を入手してください。 2. スーパ・ユーザでログインしてください。 3. アーカイバパッケージのアーカイブを任意の作業ディレクトリ(ここで は/tmpと仮定します)に置いてください。 4. 以下のコマンドで任意の作業ディレクトリに移動してください。 cd /tmp 5. 以下のコマンドで任意の作業ディレクトリにアーカイバパッケージを 展開してください。 tar xvf GNUzip.1.2.4.SPARC.32bit.Solaris.7.pkg.tar 6. 以下のコマンドでアーカイバパッケージをインストールしてください。 pkgadd -d . GNUzip 7. 環境変数PATHに/usr/local/bin、MANPATHに/usr/local/manを追加して

(19)

第2章 Perl DBI・DBD::Symfowareの導入 8 ください。

Solaris8の場合のアーカイバのインストール

1. スーパ・ユーザでログインしてください。 2. OSをインストールしたときに、すでにアーカイバをインストールしてい る可能性があります。以下のコマンドでアーカイバがインストールされ ているかを確認してください。 pkginfo -l SUNWgzip 3. すでにアーカイバがインストールされている場合、7.に進んでください。 4. Solaris 8 Software 2 of 2 SPARC Platform Edition CDを入手してく

ださい。

5. CD-ROMをマウント(ここでは/cdrom/cdrom0にマウントしたと仮定しま す)し、CDをセットしてください。

6. 以下のコマンドでアーカイバパッケージをインストールしてください。 pkgadd -d /cdrom/cdrom0/Solaris_8/Product SUNWgzip

7. 環境変数PATHに/usr/local/bin、MANPATHに/usr/local/manを追加して ください。

Solaris9の場合のアーカイバのインストール

1. スーパ・ユーザでログインしてください。 2. OSをインストールしたときに、すでにアーカイバをインストールしてい る可能性があります。以下のコマンドでアーカイバがインストールされ ているかを確認してください。 pkginfo -l SUNWgzip 3. すでにアーカイバがインストールされている場合、7.に進んでください。 4. Solaris 9 Software 2 of 2 SPARC Platform Edition CDを入手してく

ださい。

5. CD-ROMをマウント(ここでは/cdrom/cdrom0にマウントしたと仮定しま す)し、CDをセットしてください。

6. 以下のコマンドでアーカイバパッケージをインストールしてください。 pkgadd -d /cdrom/cdrom0/Solaris_9/Product SUNWgzip

7. 環境変数PATHに/usr/local/bin、MANPATHに/usr/local/manを追加して ください。

Linuxの場合のアーカイバのインストール

Linuxの場合、アーカイバのインストールの作業は不要です。

2.1.3

コンパイラのインストール

コンパイラのインストールについて説明します。

Solaris2.6の場合のコンパイラのインストール

1. Solaris Package Archive

(http://www.ibiblio.org/pub/packages/solaris/sparc/)から、コン パイラパッケージのアーカイブ

(20)

2.1 SolarisおよびLinuxの場合の導入方法 9 (GNUgcc.2.95.2.SPARC.Solaris.2.6.pkg.tgz)を入手してください。 2. スーパ・ユーザでログインしてください。 3. コンパイラパッケージのアーカイブを任意の作業ディレクトリ(ここで は/tmpと仮定します)に置いてください。 4. 以下のコマンドで任意の作業ディレクトリに移動してください。 cd /tmp 5. 以下のコマンドで任意の作業ディレクトリにコンパイラパッケージを 展開してください。

gunzip -c GNUgcc.2.95.2.SPARC.Solaris.2.6.pkg.tgz │ tar xvf - 6. 以下のコマンドでコンパイラパッケージをインストールしてください。 pkgadd -d . GNUgcc 7. 環境変数PATHに/usr/local/bin、MANPATHに/usr/local/manを追加して ください。 8. 環境変数PATHにmakeコマンドのパスを追加します。makeコマンドは /usr/ccs/bin/make、/usr/xpg4/bin/makeがあります。シェルのスター トアップファイルで環境変数を設定する場合は、既存のmakeコマンドを 用いた業務に影響を与えないよう注意してください。

Solaris7の場合のコンパイラのインストール

1. Solaris Package Archive

(http://www.ibiblio.org/pub/packages/solaris/sparc/)から、コン パイラパッケージのアーカイブ (GNUgcc.2.95.2.SPARC.32bit.Solaris.7.pkg.tgz)を入手してください。 2. スーパ・ユーザでログインしてください。 3. コンパイラパッケージのアーカイブを任意の作業ディレクトリ(ここで は/tmpと仮定します)に置いてください。 4. 以下のコマンドで任意の作業ディレクトリに移動してください。 cd /tmp 5. 以下のコマンドで任意の作業ディレクトリにコンパイラパッケージを 展開してください。

gunzip -c GNUgcc.2.95.2.SPARC.32bit.Solaris.7.pkg.tgz │ tar xvf - 6. 以下のコマンドでコンパイラパッケージをインストールしてください。 pkgadd -d . GNUgcc 7. 環境変数PATHに/usr/local/bin、MANPATHに/usr/local/manを追加して ください。 8. 環境変数PATHにmakeコマンドのパスを追加します。makeコマンドは /usr/ccs/bin/make、/usr/xpg4/bin/makeがあります。シェルのスター トアップファイルで環境変数を設定する場合は、既存のmakeコマンドを 用いた業務に影響を与えないよう注意してください。

Solaris8およびSolaris9の場合のコンパイラのインストール

1. Solaris Package Archive

(21)

第2章 Perl DBI・DBD::Symfowareの導入 10 パイラパッケージのアーカイブ (GNUgcc.2.95.2.SPARC.32bit.Solaris.8.pkg.tgz)を入手してください。 2. スーパ・ユーザでログインしてください。 3. コンパイラパッケージのアーカイブを任意の作業ディレクトリ(ここで は/tmpと仮定します)に置いてください。 4. 以下のコマンドで任意の作業ディレクトリに移動してください。 cd /tmp 5. 以下のコマンドで任意の作業ディレクトリにコンパイラパッケージを 展開してください。

gunzip -c GNUgcc.2.95.2.SPARC.32bit.Solaris.8.pkg.tgz │ tar xvf - 6. 以下のコマンドでコンパイラパッケージをインストールしてください。 pkgadd -d . GNUgcc 7. 環境変数PATHに/usr/local/bin、MANPATHに/usr/local/manを追加して ください。 8. 環境変数PATHにmakeコマンドのパスを追加します。makeコマンドは /usr/ccs/bin/make、/usr/xpg4/bin/makeがあります。シェルのスター トアップファイルで環境変数を設定する場合は、既存のmakeコマンドを 用いた業務に影響を与えないよう注意してください。

Linuxの場合のコンパイラのインストール

Linuxの場合、コンパイラのインストールの作業は不要です。

2.1.4

Symfowareのインストール

Symfowareのインストールについて説明します。

Symfoware/RDBにリモートアクセスする場合のSymfowareのインストー

1. Symfoware Clientをインストールしてください。 2. Perlを使用するユーザの環境変数LD_LIBRARY_PATH、LD_PRELOADを設定 してください。環境変数LD_LIBRARY_PATH、LD_PRELOADの詳細は、“RDB ユーザーズガイド 応用プログラム開発編”の“応用プログラムの起動” を参照してください。

Symfoware/RDBにローカルアクセスする場合のSymfowareのインストー

1. Symfoware Serverをインストールしてください。 2. Perlを使用するユーザの環境変数LD_LIBRARY_PATH、LD_PRELOADを設定 してください。環境変数LD_LIBRARY_PATH、LD_PRELOADの詳細は、“RDB ユーザーズガイド 応用プログラム開発編”の“応用プログラムの起動” を参照してください。 3. PerlスクリプトからローカルのSymfoware/RDBに対するRDBコマンドを 呼び出す場合、Perlを使用するユーザの環境変数PATH、LANGを設定して ください。環境変数PATH、LANGの詳細は、“RDB管理者ガイド”の“環境

(22)

2.1 SolarisおよびLinuxの場合の導入方法 11 変数の設定”を参照してください。

2.1.5

Perlのインストール

Perlのインストールについて説明します。

Solarisの場合のPerlのインストール

1. CPAN(http://www.perl.com/CPAN/modules/by-module/CPAN/)から、Perl ソースのアーカイブ(perl-5.6.1.tar.gz)を入手してください。 2. スーパ・ユーザでログインしてください。 3. Perlソースのアーカイブを任意の作業ディレクトリ(ここでは/tmpと仮 定します)に置いてください。 4. 以下のコマンドで任意の作業ディレクトリに移動してください。 cd /tmp 5. 以下のコマンドでPerlソースを展開してください。 gunzip -c perl-5.6.1.tar.gz │ tar xvf -

6. 以下のコマンドでPerlソースディレクトリに移動してください。 cd /tmp/perl-5.6.1 7. 以下のコマンドでPerlのビルドの準備を行ってください。使用するコン パイラの問い合わせにはgccを指定し、その他の問い合わせには空エン ターを指定してください。 ./Configure 8. 以下のコマンドでPerlをビルドおよびインストールしてください。 make make test make install 9. Perlを使用するユーザの環境変数PATHに/usr/local/bin、MANPATHに /usr/local/manを追加してください。 Perlのインストールをやりなおす場合、Perlソースのディレクトリを削 除して、手順.3からやりなおしてください。

Linuxの場合のPerlのインストール

Linuxの場合、Perlのインストールの作業は不要です。

2.1.6

DBIのインストール

DBIのインストールについて説明します。

DBIのインストール

1. CPAN(http://www.cpan.org/modules/by-module/DBI/)から、DBIソー スのアーカイブ(DBI-1.30.tar.gz)を入手してください。 2. スーパ・ユーザでログインしてください。

(23)

第2章 Perl DBI・DBD::Symfowareの導入 12 3. DBIソースのアーカイブを任意の作業ディレクトリ(ここでは/tmpと仮 定します)に置いてください。 4. 以下のコマンドで任意の作業ディレクトリに移動してください。 cd /tmp 5. 以下のコマンドでDBIソースを展開してください。 gunzip -c DBI-1.30.tar.gz │ tar xvf -

6. 以下のコマンドでDBIソースディレクトリに移動してください。 cd /tmp/DBI-1.30 7. 以下のコマンドでDBIをビルドおよびインストールしてください。 perl Makefile.PL make make test make install DBIのインストールをやりなおす場合、DBIソースのディレクトリを削除 して、手順.3からやりなおしてください。

2.1.7

DBD::Symfowareのインストール

DBD::Symfowareのインストールについて説明します。

DBD::Symfowareのインストール

1. スーパ・ユーザでログインしてください。 2. DBD::Symfowareソースのアーカイブ(DBD-Symfoware-1.00.tar.gz)を 入手してください。 3. DBD::Symfowareソースのアーカイブを任意の作業ディレクトリ(ここで は/tmpと仮定します)に置いてください。 4. 以下のコマンドで任意の作業ディレクトリに移動してください。 cd /tmp 5. 以下のコマンドでDBD::Symfowareソースを展開してください。 gunzip -c DBD-Symfoware-1.00.tar.gz │ tar xvf -

6. 以下のコマンドでDBD::Symfowareソースディレクトリに移動してくだ さい。 cd /tmp/DBD-Symfoware-1.00 7. Symfowareをデフォルト以外のディレクトリ配下にインストールした場 合、環境変数SYMFOWARE_HOMEに/インストール先ディレクトリ名を設定 してください。 8. 以下のコマンドでDBD::Symfowareをビルドおよびインストールしてく ださい。 perl Makefile.PL make make install

(24)

2.1 SolarisおよびLinuxの場合の導入方法

13 DBD::Symfowareのインストールをやりなおす場合、DBD::Symfowareソー スのディレクトリを削除して、手順.3からやりなおしてください。

(25)

第2章 Perl DBI・DBD::Symfowareの導入 14

2.2

Windowsの場合の導入方法

Windowsでの、Perl、DBI、DBD::Symfowareの導入方法について説明します。

2.2.1

アーカイバのインストール

アーカイバのインストールについて説明します。

アーカイバのインストール

1. tar.gz形式、zip形式で圧縮されたファイルを展開することができるア ーカイバを入手してください。 2. ソフトウェアをインストールすることができる権限を持つユーザでロ グオンしてください。 3. アーカイバをインストールしてください。

2.2.2

コンパイラのインストール

コンパイラのインストールについて説明します。 コンパイラのインストール後にSymfowareをインストールすることを推奨し ます。

DBI、DBD::Symfowareをビルドしてインストールする場合のコンパイラ

のインストール

1. ソフトウェアをインストールすることができる権限を持つユーザでロ グオンしてください。

2. Microsoft Visual C++ 6.0(Microsoft Visual C++ 5.0は不可)をイン ストールしてください。

DBI、DBD::SymfowareをPPM(Perl Package Manager)でインストール

する場合のコンパイラのインストール

コンパイラのインストールは不要です。

2.2.3

Symfowareのインストール

Symfowareのインストールについて説明します。

Windows 95/98/Me/XPまたはWindows NT/2000/XPで、リモートの

Symfoware/RDBをアクセスする場合のSymfowareのインストール

1. ソフトウェアをインストールすることができる権限を持つユーザでロ グオンしてください。 2. Symfoware Clientをインストールしてください。 3. インストール時に自動的に環境変数が設定されます。

(26)

2.2 Windowsの場合の導入方法 15

Windows NT/2000/XPで、ローカルのSymfoware/RDBをアクセスする場合

のSymfowareのインストール

1. ソフトウェアをインストールすることができる権限を持つユーザでロ グオンしてください。 2. Symfoware Serverをインストールしてください。 3. インストール時に自動的に環境変数が設定されます。

2.2.4

Perlのインストール

Perlのインストールについて説明します。

Windows NTまたはWindows 95/98の場合のPerlのインストール

1. Microsoft Installer(Windows NT の場合は http://download.microsoft.com/download/platformsdk/wininst/1.1/ NT4/EN-US/InstMsi.exe、Windows 95/98の場合は http://download.microsoft.com/download/platformsdk/wininst/1.1/ W9X/EN-US/InstMsi.exe)を入手してください。 2. Active State (http://www.activestate.com/ASPN/Downloads/ActivePerl/)から、 Perlパッケージ(ActivePerl-5.6.1.631-MSWin32-x86.msi)を入手して ください。 3. ソフトウェアをインストールすることができる権限を持つユーザでロ グオンしてください。 4. InstMsi.exeを任意の作業ディレクトリに置いてください。 5. ActivePerl-5.6.1.630-MSWin32-x86.msiを任意の作業ディレクトリに 置いてください。 6. エ ク ス プ ロ ー ラ を 起 動 し 、 InstMsi.exe を ダ ブ ル ク リ ッ ク し て 、 Microsoft Installerをインストールしてください。 7. エクスプローラを起動し、ActivePerl-5.6.1.630-MSWin32-x86.msiをダ ブルクリックして、ActivePerlをインストールしてください。 8. インストール時に自動的に環境変数が設定されます。

Windows 2000/XP、Windows Me/XPの場合のPerlのインストール

1. Active State(http://aspn.activestate.com/ASPN/Perl/)から、Perl パッケージ(ActivePerl-5.6.1.630-MSWin32-x86.msi)を入手してくだ さい。 2. ソフトウェアをインストールすることができる権限を持つユーザでロ グオンしてください。 3. ActivePerl-5.6.1.630-MSWin32-x86.msiを任意の作業ディレクトリに 置いてください。 4. エクスプローラを起動し、ActivePerl-5.6.1.630-MSWin32-x86.msiをダ ブルクリックして、ActivePerlをインストールしてください。 5. インストール時に自動的に環境変数が設定されます。

(27)

第2章 Perl DBI・DBD::Symfowareの導入 16

2.2.5

DBIのインストール

DBIのインストールについて説明します。 なお、Active Stateが公開しているDBIのパッケージは、最新のDBIより古い ことがあることに注意してください。

DBIをビルドしてインストールする場合

1. CPAN(http://www.cpan.org/modules/by-module/DBI/)から、DBIソー スのアーカイブ(DBI-1.30.tar.gz)を入手してください。 2. ソフトウェアをインストールすることができる権限を持つユーザでロ グオンしてください。 3. アーカイバを用いて、任意の作業ディレクトリ(ここではC:¥TEMPと仮 定します)にDBIソースを展開してください。 4. コマンドプロンプトを起動してください。 5. 以下のコマンドでDBIソースディレクトリに移動してください。 C: cd C:¥TEMP¥DBI-1.30 6. 以下のコマンドでDBIをビルドおよびインストールしてください。 perl Makefile.PL nmake nmake test nmake install DBIのインストールをやりなおす場合、Perlソースのディレクトリを削 除して、手順.3からやりなおしてください。

DBIをPPM(Perl Package Manager)でインストールする場合

1. Active State (http://www.activestate.com/PPMPackages/zips/6xx-builds-only/) から、DBIパッケージのアーカイブ(DBI.zip)を入手してください。 2. ソフトウェアをインストールすることができる権限を持つユーザでロ グオンしてください。 3. アーカイバを用いて、任意の作業ディレクトリ(ここではC:¥TEMP¥dbi と仮定します)にDBIパッケージを展開してください。 4. コマンドプロンプトを起動してください。 5. 以下のコマンドでDBIパッケージディレクトリに移動してください。 C: cd C:¥TEMP¥dbi 6. 以下のコマンドでDBIをインストールしてください。 ppm install dbi.ppd

(28)

2.2 Windowsの場合の導入方法 17

2.2.6

DBD::Symfowareのインストール

DBD::Symfowareのインストールについて説明します。

DBD::Symfowareをビルドしてインストールする場合

1. DBD::Symfowareソースのアーカイブ(DBD-Symfoware-1.00.tar.gz)を 入手してください。 2. ソフトウェアをインストールすることができる権限を持つユーザでロ グオンしてください。 3. アーカイバを用いて、任意の作業ディレクトリ(ここではC:¥TEMPと仮 定します)にDBD::Symfowareソースを展開してください。 4. コマンドプロンプトを起動してください。 5. 以下のコマンドでDBD::Symfowareソースのディレクトリに移動してく ださい。 C: cd C:¥TEMP¥DBD-Symfoware-1.00 6. 以下のコマンドでDBD::Symfowareをビルドおよびインストールしてく ださい。 perl Makefile.PL nmake nmake install DBD::Symfowareのインストールをやりなおす場合、DBD::Symfowareソー スのディレクトリを削除して、手順.3からやりなおしてください。

DBD::SymfowareをPPM(Perl Package Manager)でインストールする場

1. DBD::Symfowareパッケージのアーカイブ (DBD-Symfoware-ppm-1.00.zip)を入手します。 2. ソフトウェアをインストールすることができる権限を持つユーザでロ グオンしてください。 3. アーカイバを用いて、任意の作業ディレクトリ(ここではC:¥TEMP¥dbd と仮定します)にDBD::Symfowareパッケージを展開してください。 4. コマンドプロンプトを起動してください。 5. 以下のコマンドでDBD::Symfowareパッケージのディレクトリに移動し てください。 C: cd C:¥TEMP¥dbd 6. 以下のコマンドでDBD::Symfowareをインストールしてください。 ppm install dbd-Symfoware.ppd

(29)
(30)

第3章

Perl DBI・DBD::Symfowareの使

本章では、PerlからSymfoware/RDBのデータベースをアクセスする方法につ いて説明します。 3.1 Perlスクリプトの作成・実行 3.2 dbishの実行 3.3 Perl DBI・DBD::Symfowareの規約

(31)

第3章 Perl DBI・DBD::Symfowareの使用 20

3.1

Perlスクリプトの作成・実行

Perlスクリプトの作成・実行について説明します。

Perlスクリプトの作成・実行

1. Perlスクリプトからアクセスするデータベースを作成してください。デ ータベースの作成方法の詳細は、“RDB管理者ガイド”と“RDBユーザー ズガイド データベース定義編”を参照してください。 2. エディタで、Perlスクリプトを作成してください。Perlスクリプトの簡 単な例を以下に示します。 use DBI ; $dbh = DBI->connect( "dbi:Symfoware:RDBDB", "rdbmng", "******", { RaiseError => 1 } ) ;

$sth = $dbh->prepare( "SELECT * FROM STOCKS.STOCK" ) ; $sth->execute ;

while( @array = $sth->fetchrow_array ) { printf "@array¥n" ; } $dbh->disconnect ; 3. 必要に応じて、環境変数RDBCHARSET、RDBNCHARにPerlスクリプトの文字 コードを指定してください。環境変数RDBCHARSET、RDBNCHARの詳細は、 “RDBユーザーズガイド 応用プログラム開発編”の“環境変数”を参照 してください。 4. Symfoware/RDBにローカルアクセスする場合、環境変数RDBNAMEにRDBシ ステム名を指定してください。省略した場合、RDB名なしのRDBシステム に接続します。環境変数RDBNAMEの詳細は、“RDBユーザーズガイド 応用 プログラム開発編”の“マルチRDB運用のコネクション”を参照してく ださい。 5. Symfoware/RDBにリモートアクセスする場合、Symfoware Serverのリモ ートアクセスの設定とRDBシステムの再起動を行う必要があります。リ モートアクセスの設定の詳細は、“スタートガイド サーバ編”の“RDB のセットアップ”および“システム用の動作環境ファイルによる定義” の“MAX_CONNECT_TCP”を参照してください、。 6. 以下のコマンドでPerlスクリプトを実行します。 perl ファイル名

(32)

3.2 dbishの実行 21

3.2

dbishの実行

dbishの実行について説明します。

dbishの実行

1. dbishからアクセスするデータベースを作成してください。データベー スの作成方法の詳細は、“RDB管理者ガイド”と“RDBユーザーズガイド データベース定義編”を参照してください。 2. ローカルのSymfoware/RDBに接続する場合、環境変数RDBNAMEにRDBシス テム名を指定してください。省略した場合、RDB名なしのRDBシステムに 接続します。環境変数RDBNAMEの詳細は、“RDBユーザーズガイド 応用プ ログラム開発編”の“マルチRDB運用のコネクション”を参照してくだ さい。 3. リモートのSymfoware/RDBに接続する場合、Symfoware Serverのリモー トアクセスの設定とRDBシステムの再起動を行う必要があります。リモ ートアクセスの設定の詳細は、“スタートガイド サーバ編”の“RDBの セットアップ”および“システム用の動作環境ファイルによる定義”の “MAX_CONNECT_TCP”を参照してください、。 4. 環境変数DBI_DSNにデータソース名を指定してください。データソース 名の詳細は、“4.3.1 connect”の“パラメタ”を参照してください。環 境変数DBI_DSNを省略した場合、dbishがデータソース名を問い合わせま す。 5. 環境変数DBI_USERに認可識別子を指定してください。環境変数DBI_USER を省略した場合、dbishを実行するユーザの認可識別子が採用されます。 6. 環境変数DBI_PASSにパスワードを指定してください。環境変数DBI_USER を省略した場合はdbishを実行するユーザのパスワードが採用されます。 環境変数DBI_USERを指定した場合はdbishがパスワードを問い合わせま す。 7. 必要に応じて、環境変数DBI_TRACEを指定してください。環境変数 DBI_TRACEの詳細は、“4.3.5 trace”を参照してください。 8. 以下のコマンドでdbishを実行します。環境変数DBI_DSN、DBI_USER、 DBI_PASSの指定よりもコマンドで指定するデータソース名、認可識別子、 パスワードのほうが優先されます。 dbish [ データソース名 [ 認可識別子 [ パスワード ] ] ] 9. dbishがデータソース名を問い合わせてきた場合、データソース名を指 定してください。データソース名の詳細は、“4.3.1 connect”の“パラ メタ”を参照してください。 10. dbishがパスワードを問い合わせてきた場合、パスワードを指定してく ださい。 11. 以下のコマンドでSQL文を実行します。 dbi:Symfoware:RDBDB> SQL文を指定する。 dbi:Symfoware:RDBDB> /go (実行結果が表示されます。)

(33)

第3章 Perl DBI・DBD::Symfowareの使用 22 12. 以下のコマンドでdbishの使用方法を調べてください。 dbi:Symfoware:RDBDB> /help 13. 以下のコマンドでdbishを終了します。 dbi:Symfoware:RDBDB> /quit

dbishの実行例

dbishの実行例を以下に示します。 # dbish

DBI::Shell xx.xx using DBI x.xx

WARNING: The DBI::Shell interface and functionality are ======= very likely to change in subsequent versions!

Available DBI drivers: 1: dbi:ExampleP 2: dbi:Proxy 3: dbi:Symfoware

Enter driver name or number, or full 'dbi:...:...' DSN: dbi:Symfoware:RDBDB Connecting to 'dbi:Symfoware:RDBDB' as ''...

@dbi:Symfoware:RDBDB> select * from stocks.stock

Current statement buffer (enter '/' to execute or '/help' for help): select * from stocks.stock

@dbi:Symfoware:RDBDB> /go

PRODUCT_NUMBER,PRODUCT_NAME,STOCK_QUANTITY,WAREHOUSE_NUMBER '140','cassette deck ','120','2'

'110','television ','85','2' [2 rows of 4 fields returned] @dbi:Symfoware:RDBDB> /format box

@dbi:Symfoware:RDBDB> select * from stocks.stock

Current statement buffer (enter '/' to execute or '/help' for help): select * from stocks.stock

@dbi:Symfoware:RDBDB> /go +---+---+---+---+ │PRODUCT_NUMBER│PRODUCT_NAME │STOCK_QUANTITY│WAREHOUSE_NUMBER│ +---+---+---+---+ │ 140│cassette deck │ 120│ 2│ +---+---+---+---+ │ 110│television │ 85│ 2│ +---+---+---+---+ [2 rows of 4 fields returned]

@dbi:Symfoware:RDBDB> /quit

Disconnecting from dbi:Symfoware:RDBDB. #

dbishの注意事項

(34)

3.2 dbishの実行

23 コードが含まれているときの考慮が足りません。マルチバイト文字列の詳細は、 “6.3 マルチバイト文字列の注意”を参照してください。

(35)

第3章 Perl DBI・DBD::Symfowareの使用 24

3.3

Perl DBI・DBD::Symfowareの規約

Perl DBI・DBD::Symfowareの規約について説明します。

3.3.1

Perl DBI・DBD::Symfowareの仕様

Perl DBI・DBD::Symfowareの仕様について説明します。

Perl DBI・DBD::Symfowareの仕様

DBIに関して書籍などの参考資料が出ており、DBIの仕様を規定しています。 しかし、各データベースベンダが提供するDBDの動作によって、DBIの詳細な仕 様が異なります。 本マニュアルではDBD::Symfowareを用いた場合のDBIの詳細な仕様を規定し ています。書籍など参考資料のDBIの仕様と異なる箇所があります。

3.3.2

変数の規約

変数の規約について説明します。

変数の規約

Perlスクリプトの変数は、変数名の先頭に必ず$、@、%といった記号を付け ます。この記号によって変数の構造が決まります。

$value

変数名の先頭の$は、単一の値を保持することを表します。 値が配列の参照の場合、$value->[要素番号]で配列の要素番号に対応した値 を参照することができます。 値が連想配列への参照の場合、$value->{要素名}で名前に対応した値を参照 することができます。

@values

変数名の先頭の@は、複数の値を配列で保持することを表します。 @valueの値は、$values[要素番号]で配列の要素番号に対応した値を参照す ることができます。配列の要素番号は0から始まる数値です。よって、配列の1 要素目の要素番号は0です。

%values

変数名の先頭の%は、複数の値を要素名で対応付けて値を保持することを表 します。これを連想配列と呼びます。連想配列のことをハッシュとも呼びます。 %valuesの値は、$values{要素名}で配列の要素名に対応した値を参照するこ とができます。

¥$value

変数名の先頭の¥$は、メソッドの引数で値への参照を渡すことを表します。

(36)

3.3 Perl DBI・DBD::Symfowareの規約 25

¥@values

変数名の先頭の¥@は、メソッドの引数で値の配列への参照を渡すことを示し ます。

¥%values

変数名の先頭の¥%は、メソッドの引数で値の連想配列への参照を渡すことを 示します。

3.3.3

真、偽、不定

真、偽、不定について説明します。

真、true

trueとは、0以外の値(一般には1であることが多いです。また特殊なtrueと して0E0があります)を表します。 Perlスクリプト中で、変数にtrueを設定するときは $value = 1 ; で行い、 変数の値がtrueであることを判定するときは if( $value ) { } で行います。

偽、false

falseとは、0、"0"または空文字列を表します。

Perlスクリプト中で、変数にfalseを設定するときは $value = 0 ; で行い、 変数の値がfalseであることを判定するときは if( ! $value ) { } で行いま す。

不定、undef

undefとは、値が設定されていない状態を表します。

Perlスクリプト中で、変数がundefであることを判定するときは if( ! defined $value ) { } で行い、変数の値がfalseまたは変数がundefであるこ とを判定するときは if( ! $value ) { } で行います。

3.3.4

SQL文の規約

SQL文の規約について説明します。

使用できるSQL文

使用できるSQL文を以下に示します。 使用できるSQLの文、要素および機能については、“SQLリファレンスガイド” の“SQLと関数の一覧”を参照してください。 それぞれのSQL文の詳細については、“SQLリファレンスガイド”に記載され ている各SQL文の説明記事を参照してください。 ● 動的SELECT文 ● INSERT文 ● UPDATE文:探索 ● UPDATE文:位置付け ● DELETE文:探索 ● DELETE文:位置付け

(37)

第3章 Perl DBI・DBD::Symfowareの使用 26 ● スキーマ定義文 ● スキーマ操作文 ● 格納構造定義文 ● 格納構造操作文 ● 利用者制御文 ● アクセス制御文 ● システム制御文 ● CALL文 ● SET SCHEMA文 ● SET TRANSACTION文 動的SELECT文、INSERT文、UPDATE文:探索、UPDATE文:位置付け、DELETE文: 探索、CALL文に、動的パラメタを指定し、動的パラメタに対応する値を指定す ることができます。参考資料によっては、動的パラメタのことをプレースホル ダとも呼びます。 動的パラメタの詳細は、“SQLリファレンスガイド”の“値指定と相手指定” を参照してください。 表定義、インデックス定義に格納領域指定が省略されている場合、格納領域 指定を付加します。格納領域指定を付加をするか否かを変更する場合、データ ソース名のパラメタに“CLI_STORAGE_AREA_AUTO_SET”を指定してください。 データソース名の詳細は、“4.3.1 connect”の“パラメタ”を参照してくださ い。 格納領域指定の詳細は、“SQLリファレンスガイド”の“CREATE TABLE文(表 定義)”、“CREATE INDEX文(インデックス定義)”を参照してください。

(38)

第4章

DBI・DBD::Symfowareの仕様

本章では、DBI・DBD::Symfowareを用いてSymfoware/RDBのデータベースをア クセスするときの仕様について説明します。 4.1 DBI・DBD::Symfowareの概要 4.2 DBIモジュールロード 4.3 DBIクラスメソッド 4.4 DBIユーティリティ関数 4.5 DBIクラス属性 4.6 すべてのハンドルに共通メソッド 4.7 すべてのハンドルに共通の属性 4.8 データベースハンドルメソッド 4.9 データベースハンドル属性 4.10 ステートメントハンドルメソッド 4.11 ステートメントハンドル属性

(39)

第4章 DBI・DBD::Symfowareの仕様 28

4.1

DBI・DBD::Symfowareの概要

DBI・DBD::Symfowareの概要について説明します。

4.1.1

DBI・DBD::Symfowareスクリプト例

DBI・DBD::Symfowareのスクリプト例について説明します。

DBI・DBD::Symfoware Perlスクリプト例

本章で示している例は、主に以下のPerlスクリプトをベースにしたものを用 いています。以下のPerlスクリプトを実行させるためには、ユーザ“rdbmng” がデータベース“RDBDB”、データベーススペース“DBSP1”、スキーマ“STOCKS” を定義しておく必要があります。 # 1. use DBI ; # 2.

$dbh = DBI->connect( "dbi:Symfoware:RDBDB", "rdbmng", "******", { PrintError => 0 } ) or die "$DBI::errstr¥n" ;

# 3.

$dbh->do( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$dbh->do( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) or die "$DBI::errstr¥n" ;

$dbh->do( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) or die "$DBI::errstr¥n" ;

$dbh->do( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or die "$DBI::errstr¥n" ;

# 4.

$sth = $dbh->prepare( "SELECT * FROM STOCKS.STOCK" ) or die "$DBI::errstr¥n" ; # 5.

$sth->execute ; # 6.

while( @array = $sth->fetchrow_array ) { printf "@array¥n" ;

}

die "$DBI::errstr¥n" if $DBI::err ; # 7.

$dbh->disconnect or die "$DBI::errstr¥n" ; 1. DBIモジュールをロードします。

2. データベースに接続し、データベースハンドル“dbh”を取得します。 エラーが発生したときに警告を発行しないオプションを指定していま

(40)

4.1 DBI・DBD::Symfowareの概要 29 す(この場合、エラー処理を作り込む必要があります)。データベース ハンドルが取得できないときは、例外を発行します。 3. データベースハンドル“dbh”を用いて、SQL文を実行します。復帰値が 正常でないときは、例外を発行します。 4. データベースハンドル“dbh”を用いて、SQL文を準備し、ステートメン トハンドル“sth”を取得します。ステートメントハンドルが取得でき ないときは、例外を発行します。 5. ステートメントハンドル“sth”を用いて、SQL文を実行します。 6. ステートメントハンドル“sth”を用いて、フェッチした一行のデータ の入った配列“@array”を取得します。フェッチ中にエラーが発生して いれば、例外を発行します。 7. データベースハンドル“dbh”を用いて、データベースの接続を切断し ます。復帰値が正常でないときは、例外を発行します。 上記のほかに、性能を考慮した記述方法、複数の記述を簡略するための記述 方法など、DBIは豊富なインタフェースを持っています。

(41)

第4章 DBI・DBD::Symfowareの仕様 30

4.2

DBIモジュールロード

DBIモジュールロードについて説明します。

4.2.1

use DBI

説明

use DBIは、DBIモジュールをロードします。

構文

use DBI ;

(42)

4.3 DBIクラスメソッド 31

4.3

DBIクラスメソッド

DBIクラスメソッドについて説明します。

4.3.1

connect

説明

connectは、データベースに接続し、データベースハンドルオブジェクトへ の参照を返却します。

構文

$dbh = DBI->connect( $data_source, $user_name, $password ) ;

$dbh = DBI->connect( $data_source, $user_name, $password, ¥%set_attr ) ;

パラメタ

$data_source : データソース名"dbi:ドライバ名:DBDに渡す文字列"を指定してください。 Symfoware/RDBにローカルアクセスする場合、"dbi:Symfoware:データベース 名"または"dbi:Symfoware:データベース名;パラメタ"を指定してください。 Symfoware/RDBにリモートアクセスする場合、"dbi:Symfoware:データベース 名,ホスト名,ポート番号"または"dbi:Symfoware:データベース名,ホスト名, ポート番号;パラメタ"を指定してください。 undefまたは空文字列の場合、環境変数DBI_DSNの値が採用されます。 パラメタについては、“付録A connect、connect_cachedのパラメタの記述形 式”を参照してください。 $user_name : 認可識別子を指定してください。 undefの場合、環境変数DBI_USERの値が採用されます。 $password : パスワードを指定してください。 undefの場合、環境変数DBI_PASSの値が採用されます。 ¥%set_attr : すべてのハンドルに共通の属性の連想配列を指定してください。

戻り値

データベースハンドルオブジェクトへの参照が返却されます。 異常の場合、undefが返却されます。

use DBI ;

$dbh = DBI->connect( "dbi:Symfoware:RDBDB", "rdbmng", "******", { PrintError => 0 } ) ;

if( ! defined $dbh ) { die "$DBI::errstr¥n" ; }

(43)

第4章 DBI・DBD::Symfowareの仕様

32

$dbh->do( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$dbh->do( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) or die "$DBI::errstr¥n" ;

$dbh->do( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) or die "$DBI::errstr¥n" ;

$dbh->do( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or die "$DBI::errstr¥n" ;

$sth = $dbh->prepare( "SELECT * FROM STOCKS.STOCK" ) or die "$DBI::errstr¥n" ; $sth->execute ;

while( @array = $sth->fetchrow_array ) { printf "@array¥n" ;

}

die "$DBI::errstr¥n" if $DBI::err ; $rc = $dbh->disconnect ; if( ! $rc ) { die "$DBI::errstr¥n" ; }

4.3.2

connect_cached

説明

connect_cachedは、データベースに接続し、DBIクラス内でパラメタの値で データベースハンドルオブジェクトを連想配列に格納し、データベースハンド ルオブジェクトへの参照を返却します。 同じパラメタ値でconnect_cachedを呼び出した場合、前回のデータベース接 続が有効であれば、データベース接続を再使用します。

構文

$dbh = DBI->connect_cached( $data_source, $user_name, $password ) ; $dbh = DBI->connect_cached( $data_source, $user_name, $password,

¥%set_attr ) ;

パラメタ

$data_source : データソース名"dbi:ドライバ名:DBDに渡す文字列"を指定してください。 Symfoware/RDBにローカルアクセスする場合、"dbi:Symfoware:データベース 名"または"dbi:Symfoware:データベース名;パラメタ"を指定してください。 Symfoware/RDBにリモートアクセスする場合、"dbi:Symfoware:データベース 名,ホスト名,ポート番号"または"dbi:Symfoware:データベース名,ホスト名, ポート番号;パラメタ"を指定してください。 undefまたは空文字列の場合、環境変数DBI_DSNの値が採用されます。 パラメタについては、“付録A connect、connect_cachedのパラメタの記述形 式”を参照してください。 $user_name : 認可識別子を指定してください。

(44)

4.3 DBIクラスメソッド 33 undefの場合、環境変数DBI_USERの値が採用されます。 $password : パスワードを指定してください undefの場合、環境変数DBI_PASSの値が採用されます。 ¥%set_attr : すべてのハンドルに共通の属性の連想配列を指定してください。

戻り値

データベースハンドルオブジェクトへの参照が返却されます。 異常の場合、undefが返却されます。

use DBI ;

$dbh1 = DBI->connect( "dbi:Symfoware:RDBDB", "rdbmng", "******", { PrintError => 0 } ) or die "$DBI::errstr¥n" ;

$dbh2 = DBI->connect_cached( "dbi:Symfoware:RDBDB", "rdbmng", "******", { PrintError => 0 } ) or die "$DBI::errstr¥n" ;

$dbh3 = DBI->connect_cached( "dbi:Symfoware:RDBDB", "rdbmng", "******", { PrintError => 0 } ) or die "$DBI::errstr¥n" ;

$dbh1->do( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$dbh1->do( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) or die "$DBI::errstr¥n" ;

$dbh1->do( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) or die "$DBI::errstr¥n" ;

$dbh1->do( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or die "$DBI::errstr¥n" ;

$sth1 = $dbh2->prepare( "SELECT * FROM STOCKS.STOCK" ) or die "$DBI::errstr¥n" ; $sth2 = $dbh2->prepare_cached( "SELECT * FROM STOCKS.STOCK" ) or die "$DBI:: errstr¥n" ;

$sth3 = $dbh2->prepare_cached( "SELECT * FROM STOCKS.STOCK" ) or die "$DBI:: errstr¥n" ;

$sth1->execute ; $sth2->execute ; $sth3->execute ; $drh = $dbh1->{Driver} ;

printf "Kids : %d¥n", $drh->{Kids} ; printf "ActiveKids : %d¥n", $drh->{ActiveKids} ; printf "Kids : %d¥n", $dbh3->{Kids} ; printf "ActiveKids : %d¥n", $dbh3->{ActiveKids} ; $hash_dbh = $drh->{CachedKids} ;

@keys_dbh = keys(%$hash_dbh) ; $key_dbh = $keys_dbh[0] ; $hash_sth = $dbh2->{CachedKids} ; @keys_sth = keys( %$hash_sth ) ; $key_sth = $keys_sth[0] ; printf "Key : %s¥n", $key_dbh ; printf "Key : %s¥n", $key_sth ; $dbh = $hash_dbh->{$key_dbh} ; $sth = $hash_sth->{$key_sth} ;

printf "Name : %s¥n", $dbh->{Name} ;

printf "NUM_OF_FIELDS : %d¥n", $sth->{NUM_OF_FIELDS} ; $sth->finish or die "$DBI::errstr¥n" ;

(45)

第4章 DBI・DBD::Symfowareの仕様

34

printf "ActiveKids : %d¥n", $dbh3->{ActiveKids} ; $sth1->finish or die "$DBI::errstr¥n" ;

printf "Kids : %d¥n", $dbh3->{Kids} ; printf "ActiveKids : %d¥n", $dbh3->{ActiveKids} ; $dbh->disconnect or die "$DBI::errstr¥n" ; printf "Kids : %d¥n", $drh->{Kids} ; printf "ActiveKids : %d¥n", $drh->{ActiveKids} ; $dbh1->disconnect or die "$DBI::errstr¥n" ; printf "Kids : %d¥n", $drh->{Kids} ; printf "ActiveKids : %d¥n", $drh->{ActiveKids} ;

4.3.3

available_drivers

説明

available_driversは、@INCの示すディレクトリ内から利用できるDBDモジュ ールを探し、DBDのドライバ名の配列を返却します。 @INCの示すディレクトリ内に同じドライバ名があった場合、後から調べられ るDBDのドライバは配列に登録されません。

構文

@drivers = DBI->available_drivers ;

@drivers = DBI->available_drivers( $quiet ) ;

パラメタ

$quiet : @INCの示すディレクトリ内に同じDBDのドライバ名があったときに警告を発 生させない場合は、trueを指定してください。 @INCの示すディレクトリ内に同じDBDのドライバ名があったときに警告を発 行させる場合は、falseを指定してください。

戻り値

ドライバ名の配列が返却されます。

use DBI ;

foreach $inc ( @INC ) { printf "INC : %s¥n", $inc ; }

@drivers = DBI->available_drivers( false ) ; foreach $driver ( @drivers ) {

printf "driver : %s¥n", $driver ; }

参照

関連したドキュメント

Microsoft/Windows/SQL Server は、米国 Microsoft Corporation の、米国およびその

Internet Explorer 11 Windows 8.1 Windows 10 Microsoft Edge Windows 10..

Amortized efficiency of list update and paging rules.. On the

SUSE® Linux Enterprise Server 15 for AMD64 & Intel64 15S SLES SUSE® Linux Enterprise Server 12 for AMD64 & Intel64 12S. VMware vSphere® 7

項目 MAP-19-01vx.xx AL- ( Ⅱシリーズ初期データ編集ソフト) サポート OS ・ Microsoft Windows 7 32 ( ビット版). ・ Microsoft Windows Vista x86

MPIO サポートを選択すると、 Windows Unified Host Utilities によって、 Windows Server 2016 に含まれている MPIO 機能が有効になります。.

ESET Server Security for Windows Server、ESET Mail/File/Gateway Security for Linux は

The performance measures- the throughput, the type A and type B message loss probabilities, the idle probability of the server, the fraction of time the server is busy with type r,