OQL.Delphi supports the Case clause of SQL-92.
l Simple Case clause:
|
var query : ISelectQuery; aCASE : ICaseExpression; begin aCASE := OQL .Case_(NW.Order.ShipCountry) .When(' .When(' .When(' .Else_('com') .End_(); query := TSelectQuery.Create; query .Select(NW.Order.OrderID)._(NW.Order.OrderDate) ._(NW.Order.RequiredDate)._( aCASE ) .From(NW.Order) .Where( OQL .Criteria(NW.Order.EmployeeID).EQ(5) .And_(NW.Order.ShipVia).EQ(1) ); end; |
|
== Equal to the following SQL [MS SQL Server] == |
|
SELECT
[Orders].[OrderID] , [Orders].[OrderDate] , [Orders].[RequiredDate] ,
(
CASE
[Orders].[ShipCountry]
WHEN '
THEN 'cn'
WHEN '
THEN 'us'
WHEN '
THEN '
ELSE
'com'
END
) FROM [Orders] WHERE
[Orders].[EmployeeID] = 5 AND
[Orders].[ShipVia] = 1 |
l Complicated Case clause:
|
var query : ISelectQuery; aCASE : ICaseExpression; begin aCASE := OQL .Case_() .When(OQL.Criteria(NW.Order.ShipCountry).EQ(' .Then_('''cn''') .When(OQL.Criteria(NW.Order.ShipCountry).EQ(' .When(OQL.Criteria(NW.Order.ShipCountry).EQ(' .Else_('''com''') .End_(); query := TSelectQuery.Create; query .Select(NW.Order.OrderID)._(NW.Order.OrderDate) ._(NW.Order.RequiredDate)._( aCASE ) .From(NW.Order) .Where( OQL .Criteria(NW.Order.EmployeeID).EQ(5) .And_(NW.Order.ShipVia).EQ(1) ); end; |
|
== Equal to the following SQL [MS SQL Server] == |
|
SELECT [Orders].[OrderID] , [Orders].[OrderDate] , [Orders].[RequiredDate] , ( CASE WHEN [Orders].[ShipCountry] = ' THEN 'cn' WHEN [Orders].[ShipCountry] = ' THEN 'us' WHEN [Orders].[ShipCountry] = ' THEN ' ELSE 'com' END ) FROM [Orders] WHERE [Orders].[EmployeeID] = 5 AND [Orders].[ShipVia] = 1 |
Related Topics