最近のアクセス:
外部オブジェクト: ストアードプロシージャー

ストアードプロシージャー (SP) タイプの外部オブジェクト (EO) は、DBMS 内に配置された一連のストアードプロシージャーにアクセスする方法についてのすべての情報 (名前、パラメーターなど) を格納します。
このタイプの外部オブジェクトでは、複数のメソッドとそれに対応するパラメーターを定義できます。各メソッドは、DBMS で定義されているストアードプロシージャーに対応します。
イメージ:53712.png

プロパティ

外部オブジェクト

イメージ:53713.png
Name: ストアード プロシージャー オブジェクトの名前
Description: ストアード プロシージャー オブジェクトの説明
Type外部オブジェクトのタイプ (ストアードプロシージャー)
Data Store: ストアードプロシージャーが定義されている DBMS を示すデータストア
Module/Folder外部オブジェクトが配置されているフォルダ
Object Visibility: 別のモジュール内の他のオブジェクトからのアクセシビリティ 

メソッド

イメージ:53714.png
Internal Name: ナレッジベース内のメソッドに与えられる内部名
Description: メソッドの説明
Type: メソッドが返すデータのタイプ (ある場合)
External Name: DBMS 内で定義される SP の名前

パラメーター

イメージ:53715.png
Access Type: InOut、In、Out のいずれか
Internal Name: パラメーターに与えられる内部名
Description: パラメーターの説明
Type: パラメーターのデータタイプ
External Name: SP 内で定義されるパラメーターの外部名

使用方法

MySQL_SP という名前のストアード プロシージャー タイプの外部オブジェクトを作成し、&mysps という名前の MySQL_SP 変数を定義したとします。
続いて、コード内で次のように記述します:
Event 'Count'
    &mysps.get_count_universidad(&count)
    msg(&count.ToString())
EndEvent
count_universidad は、ストアードプロシージャーである sp_count_universidad に与えられた内部名です。パラメーターにおいて、my DB の University テーブルのエントリー番号をロードします。

  • ストアードプロシージャーを呼び出すために必要なすべてのコードを生成するために、GeneXus はパラメータータイプおよびそのアクセスタイプを考慮して、メソッドの内部名をその外部名に、パラメーターの内部名を対応する外部名にマップします。このため、外部名は正しく定義する必要があります。さもないと、"PLS-00306: wrong number or types of arguments in call to ' ...' " などのエラーが表示される可能性があります。
  • 挿入、更新、削除など、ストアードプロシージャーがデータベースを変更する場合は、Commit コマンドを明示的に使用する必要があります。次に例を示します:
Event 'Stored'
    &mysps.insertData()
    commit
EndEvent

デプロイ

アプリケーションをデプロイする際、SP が iSeries DB2 で実行中である場合は gx400dcl.exe (.net) または crtjdbccalls.class (java) ファイルを実行して SP を宣言する必要があります。詳しくは、SAC #26620 を参照してください。

互換性

次のように、以前のバージョンと同じ方法でストアードプロシージャーを呼び出すことができます:

call('sp_count_universidad',&count)

また、データ ストア レベルにおいて外部ストアードプロシージャーの [ List ] プロパティで使用されるストアードプロシージャーのリストも宣言できます。
この呼び出しメソッドは廃止予定なので、「spc0145, 'Calling stored procedure ''%1'' in datastore ''%2'' via the call keyword is deprecated.」という警告が表示されます。

制限

一部の複雑なデータタイプはサポートしていません。次に例を示します:
ストアードプロシージャーが RecordSet データタイプを戻す場合は、GeneXus はマップするための互換性のあるデータタイプを提供しません。
ストアードプロシージャーのメソッドの引数として null 値を使用することはできません。
ストアード関数 (Oracle) はサポートされていません。InOut パラメーターまたは Out パラメーターを指定したストアードプロシージャーを使用してください。
 

サブページ
Created: 14/09/18 03:18 by Admin Last update: 24/04/01 03:46 by Admin
カテゴリ
Powered by GXwiki 3.0