コンテンツエリア開始

Procedure documentation 一連のデータベース命令の実行 Locate the document in its SAP Library structure

用途

一連のデータベース命令を実行するには、最初にデータベースセッションを明示的に開きます。このコマンドでは、データベースセッションを開くユーザを入力することができます。ユーザを指定しない場合は、最初の DBM ユーザのデータが使用されます。このデータベースセッションで実行できるのは、データベースセッションの開始に使用したユーザに権限があるデータベース命令に限定されるので注意してください。

このデータベースセッションは、常に AUTOCOMMIT モードで開かれます。したがって、実行された SQL 文はCOMMIT 命令で自動的に終了するため、ROLLBACK命令によるロールバックはできなくなります。

このデータベースセッションでは、DBM コマンド db_executeまたは db_executeniceを使用してデータベース命令をデータベースインスタンスに送信します。

特定の状況でこれらのコマンドのどちらを優先するかは、データベース命令の結果セットの最大レコード数を表示するか、またはレコードごとの結果を表示するかによって決まります。

db_execute を使用すると、生成される結果セットが応答パッケージのサイズ ( 16 KB) を超える場合があります。この場合、データベースマネージャは結果セットの出力内にキーワード CONTINUE を表示し、照会可能なデータがさらにあることを示します。この残りのデータを照会するには、DBM コマンド db_fetch を使用します。

db_executenice を使用し、次のデータレコードに移行する場合は、DBM コマンド db_fetchnice を使用します。

結果のデータがすべて表示されたら、データベースセッションを閉じるか、またはデータベースマネージャ CLI を終了します (該当する場合)

応答パッケージのサイズを超える結果セットが予期される場合や、結果セットをレコードごとに表示する場合は、1 つのデータベース命令を実行するためにデータベースセッションを明示的に開く必要があります。この作業が必要になるのは、結果を照会するために同じデータベースセッションで複数のデータベース命令を実行する必要があるためです。

前提条件について確認するには、データベースマネージャ CLI Structure linkdb_connectStructure linkdb_executeStructure linkdb_executeniceStructure linkdb_fetchStructure linkdb_fetchniceStructure linkdb_releaseの各セクションを参照してください。

参照:

用語集Structure linkAUTOCOMMIT モードStructure linkROLLBACK

シナリオ 1

3 つの新規データベースユーザを登録し、必要な SQL 文を続けて実行します。そのためには、データベースセッションを開く必要があります。

新規データベースユーザを登録する権限は、データベースシステム管理者にのみ与えられています。そのため、データベースシステム管理者のデータを使用してデータベースセッションを開く必要があります。この DBM コマンドでユーザを指定しない場合は、最初の DBM ユーザのデータが使用されます。

参照:

データベースシステムのコンセプトStructure linkユーザ、認証および権限

参照マニュアルStructure linkCREATE USER 命令

手順

...

       1.      データベースマネージャCLI をセッションモードで呼び出し、パスワードに MONDAYを指定してユーザ OLEG としてログオンし、データベースインスタンス DEMODBに接続します。

>dbmcli -u OLEG,MONDAY -d DEMODB

dbmcli on demodb>

       2.      パスワードに SECRETを指定してデータベース管理者 DBADMINとしてデータベースセッションを開始します。

dbmcli on demodb>db_connect DBADMIN,SECRET

OK

       3.      パスワードに RED、プロパティに DBAおよび NOT EXCLUSIVEを指定して SQL 文を実行し、ユーザ MONAを登録します。

dbmcli on demodb>db_execute CREATE USER mona PASSWORD red DBA NOT EXCLUSIVE

OK

       4.      パスワードに BLUE、プロパティに RESOURCEを指定して SQL 文を実行し、ユーザ DAVIDを登録します。

dbmcli on demodb>db_execute CREATE USER david PASSWORD blue RESOURCE

OK

       5.      パスワードに PINK、プロパティに STANDARDを指定して SQL 文を実行し、ユーザ BORISを登録します。

dbmcli on demodb>db_execute CREATE USER boris PASSWORD pink STANDARD

OK

       6.      データベースセッションを閉じます。

dbmcli on demodb>db_release

OK

結果

データベースユーザ MONADAVID、および BORISが指定したプロパティで登録され、このデータベースインスタンスにログオンできるようになりました。

シナリオ 2

SQL 文を実行して usersテーブルの内容を照会します。結果セットはデータレコードごとに表示します。

手順

...

       1.      データベースマネージャCLI をセッションモードで呼び出し、パスワードに MONDAYを指定してユーザ OLEG としてログオンし、データベースインスタンス DEMODBに接続します。

>dbmcli -u OLEG,MONDAY -d DEMODB

dbmcli on demodb>

       2.      データベースセッションを開始します(ユーザを指定しない場合は、最初の DBM ユーザのデータが使用されます)

dbmcli on demodb>db_connect

OK

       3.      テーブル usersの内容 (ユーザ名、接続モード、ユーザ ID) をレコードごとに表示する SQL 文を実行します。

dbmcli on demodb>db_executenice SELECT username,connectmode,user_id FROM users

OK

CONTINUE

USERNAME                       = 'DBM'

CONNECTMODE                    = 'MULTIPLE'

USER_ID                        = 0

 

---

       4.      次のデータレコードを照会します。

dbmcli on demodb>db_fetchnice

OK

CONTINUE

USERNAME                       = 'DBADMIN'

CONNECTMODE                    = 'MULTIPLE'

USER_ID                        = 10

 

---

       5.      次のデータレコードを照会します。

dbmcli on demodb>db_fetchnice

OK

 

USERNAME                       = 'MONA'

CONNECTMODE                    = 'MULTIPLE'

USER_ID                        = 27

結果

DBM コマンド db_fetchniceを実行するたびに、結果セットの次のデータレコードが表示されます。

 

 

コンテンツエリア終了