포럼: 도움 (Thread #8240)

使用できない文字列、を使うために (2005-07-22 18:21 by sohmura #15437)

OpenOLAPModelDesignerマニュアル.pdfの中の 1.4.3 使用できない文字列 において、
「各オブジェクトの名称やコメントなどに以下の文字列を含まないように」
との記述があります。
しかし、オブジェクト名称などとして使用できないだけでなく、キューブデータの中身に
これらの文字が存在する場合も影響を受けます。

例として、サンプルデータの中のproductを使い、long_nameの一つを「'」を含む名称に
更新します(Envoy スタンダード > Envoy'sスタンダード)
この状態でキューブを作成すると、以下のようなエラーが発生します。

15:02:21 [16/43] ディメンションメンバーの更新(1)  製品 処理開始...
15:02:22 [16/43] ディメンションメンバーの更新(1)  製品 処理にてエラー発生
java.sql.SQLException: ERROR: syntax error at or near "sスタンダード"
15:02:22 キューブ情報登録 処理開始...
15:02:23 処理終了
全処理終了

製品の名称などを登録する際、使えない文字があるのは非常に不便です。
この障害はPostgreSQLの関数の定義を変更することで対処可能であることがわかりました。
上記の例の場合はディメンジョンのメンバーの定義の中でエラーとなっていますから、
関数oo_dim_memberが対象になります。

for recCnt in execute vCountSQL loopの中

vInsertSQL:= vInsertSQL|| ',' || quote_literal(hieT.long_name) || vRt;

vUpdateSQL:= vUpdateSQL|| ',long_name =' || quote_literal(hieT.long_name) || vRt;

なお変更作業にはpgAdminIIIを使いました。
キューブの作成が完了すれば、ReportDesignerでは手を加えることなく
そのままキューブを参照することができました。

RE: 使用できない文字列、を使うために (2009-12-14 10:41 by yajimama #47432)

関数oo_dim_memberの変更について、2点、確認させて下さい。
現在使用しているバージョンはv2.1.0です。

【1.関数の変更内容について】
関数の具体的な修正について質問です。
下記の変更ですと、['']の分が合わなくて、混乱しています。

>for recCnt in execute vCountSQL loopの中

変更前
vInsertSQL:= vInsertSQL|| ',''' || hieT.long_name|| '''' || vRt;
 ↓
変更後
>vInsertSQL:= vInsertSQL|| ',' || quote_literal(hieT.long_name) || vRt;


あるいは、下記のように、[hieT.long_name]を[quote_literal(hieT.long_name)]に変更すればよろしいのでしょうか。

変更前
vInsertSQL:= vInsertSQL|| ',''' || hieT.long_name|| '''' || vRt;
 ↓
変更後
vInsertSQL:= vInsertSQL|| ',''' || quote_literal(hieT.long_name)|| '''' || vRt;


同様に、vUpdateSQLの変更についても混乱しております。
>vUpdateSQL:= vUpdateSQL|| ',long_name =' || quote_literal(hieT.long_name) || vRt;


これは、バージョンの違いによる影響なのでしょうか。


【2.pgAdminIIIでの変更方法について】
>なお変更作業にはpgAdminIIIを使いました。

pgAdminIIIを使って、関数oo_dim_memberを変更するとのことですが、関数oo_dim_memberはどのような修正を施しても、「適用」あるいは「OK」を選択すると、下記のエラーメッセージが出ます。

ERROR;relation "oo_dim_0_0"does not exist
CONTEXT:compile of PL/gpSQL function "oo_dim_member" near line 19

どこか他にも修正が必要な箇所や設定があるのでしょうか。

以上の2点です。
分かり難い説明で申し訳ありませんが、宜しくお願い致します。
Reply to #15437