動的 SQL を使用する場合、満たされる特定の条件によっては、追加の句を追加する必要がある場合があります。1=1 句はクエリでは意味がありません (常に満たされること以外)。その唯一の用途は、最初にクエリを生成するために使用されるコードの複雑さを軽減することです。
たとえば、この擬似コード
DECLARE
v_text VARCHAR2(2000) := 'SELECT * FROM table WHERE 1=1 ';
BEGIN
IF condition_a = met THEN
v_text := v_text ||' AND column_1 = ''A'' ';
END IF;
IF condition_b = also_met THEN
v_text := v_text ||' AND column_2 = ''B'' ';
END IF;
execute_immediate(v_text);
END;
以下の疑似コードよりも単純であり、句が追加されるにつれて、より複雑になるだけです。
DECLARE
v_text VARCHAR2(2000) := 'SELECT * FROM table ';
BEGIN
IF condition_a = met THEN
v_text := v_text ||' WHERE column_1 = ''A'' ';
END IF;
IF condition_b = also_met AND
condition_a != met THEN
v_text := v_text ||' WHERE column_2 = ''B'' ';
ELSIF condition_b = also_met AND
condition_a = met THEN
v_text := v_text ||' AND column_2 = ''B'' ';
END IF;
execute_immediate(v_text);
END;