1

IF および ELSE ステートメントを使用して、「深さ INTEGER」に基づいて実行するストアド プロシージャの量を定義するにはどうすればよいですか? (たとえば、ユーザーが深さの境界に 1 を使用した場合、最初の部分のみが処理されます)

--#SET TERMINATOR /

CREATE PROCEDURE STOREP2(IN str_in VARCHAR(1), IN depth INTEGER )
                    LANGUAGE SQL MODIFIES SQL DATA
                    DYNAMIC RESULT SETS 1


CRSUBJ: BEGIN

DECLARE C1 CURSOR WITH RETURN FOR 

SELECT T1.COLUMN1, T1.COLUMN2 FROM TABLE1 AS T1 WHERE T1.COLUMN1=str_in

UNION

SELECT T2.COLUMN1, T2.COLUMN2 FROM TABLE1 AS T1, TABLE1 AS T2 WHERE T1.COLUMN1=str_in AND T2.COLUMN1=T1.COLUMN2

UNION 

SELECT T3.COLUMN1, T3.COLUMN2 FROM TABLE1 AS T1, TABLE1 AS T2, TABLE1 AS T3 WHERE T1.COLUMN1=str_in AND T2.COLUMN1=T1.COLUMN2 AND T3.COLUMN1=T2.COLUMN2 

UNION 

SELECT T4.COLUMN1, T4.COLUMN2 FROM TABLE1 AS T1, TABLE1 AS T2, TABLE1 AS T3, TABLE1 AS T4 WHERE T1.COLUMN1=str_in AND T2.COLUMN1=T1.COLUMN2 AND T3.COLUMN1=T2.COLUMN2 AND T4.COLUMN1=T3.COLUMN2;

OPEN C1;
RETURN;

END CRSUBJ/

ありがとう :)

4

2 に答える 2

0

より具体的には:あなたの例では、できません。効果的に実行するのは、TABLE1 に対して 4 つのクエリを実行し、結果のカーソルを返すことで、呼び出し元には 1 つのテーブルとして表示されます。テーブルの構造と、問題を解決するために何を達成しようとしているのかを知ることは役に立ちます。

于 2012-04-20T12:51:32.667 に答える
0

ドキュメントを確認してください。

于 2012-04-20T12:40:14.197 に答える