0

部分的にプロシージャ名で構成される SQL コマンドに基づく Crystal Report があります。私がやろうとしているのは、複数値の文字列パラメーターを SQL コマンドに追加して、エンド ユーザーが部分的なプロシージャ名を入力できるようにすることです。レポートは、文字列が一致する関連プロシージャのみを返します。

たとえば、ユーザーは「%KNEE%」と「%HIP%」をパラメータに入力し、「KNEE」と「HIP」という単語を含むすべてのプロシージャを返すことができる必要があります。問題は、これを達成するために SQL でパラメーター値を操作する方法がわからないことです。これは以前に{table.procedure_name} like {?name match parameter}、レコード選択式に行を追加するだけで (SQL コマンド パラメータではなく) レポート パラメータを使用して実行したことがありますが、SQL コマンドで同じ方法を使用すると、「ORA-00907: 右括弧がありません」というメッセージが表示されます。 " エラー。

これを達成するために複数値の文字列パラメーターを操作する方法について何か提案はありますか?

4

2 に答える 2

1

私は解決策を気にしないので、これを回答として投稿したくありませんが、これがこれを回避する唯一の方法です。パラメータ プロンプトで「%KNEE%」、「%HIP%」、「%ETC%」と入力するようにユーザーに指示する必要がありました。次に、{?name match parameter} のような {table.procedure_name} が SQL で機能するはずです。特に % を使用するシナリオでは、最適ではありません。私はこれに何度も取り組んできたので、誰かがより良い解決策を提供してくれることを楽しみにしています。

于 2016-02-24T16:37:53.977 に答える
0

アプローチは次のとおりです。

SELECT column0
FROM   table0
INNER JOIN (
    SELECT trim('%' || x.column_value.extract('e/text()') || '%') SEARCH
    FROM  ( SELECT 'arm,knee' options FROM dual ) t,
    TABLE (xmlsequence(xmltype('<e><e>' || replace(t.options,',','</e><e>')|| '</e></e>').extract('e/e'))) x

) v ON column0 LIKE v.search

Oracle の XML 機能を使用して、カンマ区切りの文字列を同等の行数に変換し、各句を で囲みます%%。次に、それらの行を目的のテーブルに結合します。

CR で使用するには、単一値の文字列パラメーターを作成し、コードに追加します。

...
FROM  ( SELECT '{?search_param}' options FROM dual ) t,
...
于 2016-02-24T19:18:40.150 に答える