可変⻑属性に作用するlength関数は、アプリケーションに使用される DBMS(TD)の種類により異なる結果を返すことについて
Release: r7.6
Component: CA Gen Run Time
データベースにアクセスするためにOracle、DB2(UDB)、ADO.Netを使用した場合、可変⻑属性に作用するlength関数は現在のその属性の⻑さを返します。また、データベースにアクセスするためにODBCを使用した場合、可変⻑属性に作用するlength関数はその属性の定義された⻑さを返します。
具体的には、データベースにアクセスするためにOracle、DB2(UDB)、ADO.Netを使用した場合、テーブルから読まれた可変⻑エンティティアクション属性に作用するlength関数は現在のその属性の⻑さを返します。
データベースにアクセスするためにODBCを使用した場合、テーブルから読まれた可変⻑エンティティアクション属性に作用するlength関数はその属性の定義された⻑さを返します。
例えば、テーブル上で"ABC"という値が入っている⻑さ5で定義された可変⻑属性では、
- アプリケーションがネイティブのOracle、DB2(UDB)、ADO.Net接続を介してデータベースへ接続している場合、その属性に作用するlength関数によって返される値は3です。
- アプリケーションがODBC接続を介してデータベースへ接続している場合、その属性に作用するlength関数によって返される値は5です。
ODBCはデータベースのREADから返された⻑さについてのみ、可変⻑フィールドのための埋め込まれたSQLやADO.NETとはふるまいが異なります。可変⻑フィールドがデータベースに書き込まれる時、他のDBMSターゲットの時と同じように後続スペースは切り捨てられます。READ時に定義された⻑さを返された結果、余分な⻑さはアクション図での使用にパフォーマンス的な影響は出ておりませんが、もし必要であればTRIM関数で実際の⻑さに減らしてもかまいません。
SQLServerにとってはODBCがGenによって提供された唯一のDBMSアクセスのための実装であるため、上記に記述した相違はSQLServerにとっては重要です。