SQL: AVEC la clause de paramètres?

Dans Oracle SQL Developer, je suis l'aide d'une clause, dans ce (simplifié):

WITH
foos AS
    SELECT *
    FROM my_table
    WHERE field = 'foo'
bars AS
    SELECT *
    FROM my_table
    WHERE field = 'bar'
SELECT *
FROM foo
INNER JOIN bar
ON foo.id = bar.id

Je voudrais être en mesure de prendre les " foo " et " bar " les chaînes, afin que je puisse avoir quelque chose comme:

WITH
subq(my_arg) AS
    SELECT *
    FROM my_table
    WHERE field = my_arg
SELECT *
FROM subq('foo')
INNER JOIN subq('bar')
ON subq('foo').id = subq('foo').id

Parce que, foos et bars sont en réalité beaucoup plus grand que cela, et il y a des noix de seulement deux d'entre eux, de sorte qu'il devient un peu difficile à maintenir.

Je sais que cela peut ne pas être possible avec une clause, mais quelle serait la meilleure solution pour éviter d'écrire à la sous-requête plusieurs fois? Cela peut être fait assez simple, mais je suis tout à fait nouveau pour SQL...

Merci pour votre aide.

OriginalL'auteur Catherine Gasnier | 2014-10-09