OK I’m getting terribly confused and frustrated. I methodically changed my .prm file for SQL Server based on various forum suggestions and came up with quite interesting results. In a nutshell, a prm file that looks like this (the default)…
LEFT_OUTER=$*
RIGHT_OUTER=*$
OUTERJOINS_GENERATION=USUAL
gives this query…
SELECT
EVDBV30.dbo.VwVigilanceSuspendedLots.VigId,
EVDBV30.dbo.VwVigilanceLotManagement.SBShipDate,
EVDBV30.dbo.VwVigilanceLotManagement.DataSource
FROM
EVDBV30.dbo.VwVigilanceSuspendedLots,
EVDBV30.dbo.VwVigilanceLotManagement
WHERE
( EVDBV30.dbo.VwVigilanceSuspendedLots.VigId*=EVDBV30.dbo.VwVigilanceLotManagement.VigId )
AND (
EVDBV30.dbo.VwVigilanceSuspendedLots.VigId IN (27958, 27956, 27958, 24723, 24722)
)
which runs fine!
These parameters…
LEFT_OUTER=
RIGHT_OUTER=
OUTERJOINS_GENERATION=ANSI_92
OUTERJOINS_COMPLEX=Y
generate this query…
SELECT
EVDBV30.dbo.VwVigilanceSuspendedLots.VigId,
EVDBV30.dbo.VwVigilanceLotManagement.SBShipDate,
EVDBV30.dbo.VwVigilanceLotManagement.DataSource
FROM
(EVDBV30.dbo.VwVigilanceSuspendedLots RIGHT OUTER JOIN EVDBV30.dbo.VwVigilanceLotManagement ON (EVDBV30.dbo.VwVigilanceSuspendedLots.VigId=EVDBV30.dbo.VwVigilanceLotManagement.VigId) )
WHERE
(
EVDBV30.dbo.VwVigilanceSuspendedLots.VigId IN (27958, 27956, 27958, 24723, 24722)
)
Which gives this error…
Note the RIGHT OUTER JOIN.
Finally, these parameters…
LEFT_OUTER=
RIGHT_OUTER=
OUTERJOINS_GENERATION=FULL_ODBC
OUTERJOINS_COMPLEX=Y
generate this query…
SELECT
EVDBV30.dbo.VwVigilanceSuspendedLots.VigId,
EVDBV30.dbo.VwVigilanceLotManagement.SBShipDate,
EVDBV30.dbo.VwVigilanceLotManagement.DataSource
FROM
{ oj EVDBV30.dbo.VwVigilanceSuspendedLots LEFT OUTER JOIN EVDBV30.dbo.VwVigilanceLotManagement ON ( EVDBV30.dbo.VwVigilanceSuspendedLots.VigId=EVDBV30.dbo.VwVigilanceLotManagement.VigId )
}
WHERE
(
EVDBV30.dbo.VwVigilanceSuspendedLots.VigId IN (27958, 27956, 27958, 24723, 24722)
)
which gives the same error as above. Note the LEFT OUTER JOIN…
-
Why would an outer join using the * be allowed but outer joins using ANSI_92 or FULL_ODBC be prohibited
-
Why does the join change from RIGHT OUTER to LEFT OUTER depending on whether I specify ANSI_92 or FULL_ODBC without any changes to which table has the outer join checkbox ticked
.
Watch my location. I’ll soon be ‘Hiding in the bathroom reading ANSI SQL for dummies’
Man I love Oracle!
Cindy Clayton
(BOB member since 2002-06-11)