可変長属性に作用するlength関数は、アプリケーションに使用されるDBMS(TD)の種類により異なる結果を返します

Document created by Miharu_Toyama Employee on Jul 10, 2015
Version 1Show Document
  • View in full screen mode

文書番号: JTEC001770

製品名: CA Gen

バージョン:CA Gen Run Time: r7.6

OS:


◆ 概要説明

データベースにアクセスするために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にとっては重要です。


この情報は米国 CA, Inc. より提供されている Technical Documentsをもとに作成したものです。原文の詳細につきましては下記内容をご覧ください。

https://support.ca.com/irj/portal/kbtech?docid=504538&searchID=TEC504538

Document ID: TEC504538

Title: The length function operating on a varying length attribute returns a different result depending on the DBMS(TD) type used by the application.

以上

  

Attachments

    Outcomes