Using Select Clause

Select clause can be used to insert batch data:

SelectQuery qryCustomer = OQL

  .Select(NW.Customer.CustomerID)

  .From(NW.Customer)

  .Where(NW.Customer.ContactTitle == "Owner");

 

InsertQuery insOrder = OQL

  .InsertInto(NW.Order)

  .Select(OQL

    .Select(NW.Order)

    .From(NW.Order)

    .Where(NW.Order.CustomerID.In(qryCustomer))

  );

The preceding OQL can also be divided as follows:

SelectQuery qryCustomer = OQL

  .Select(NW.Customer.CustomerID)

  .From(NW.Customer)

  .Where(NW.Customer.ContactTitle == "Owner");

 

SelectQuery qryOrder = OQL

  .Select(NW.Order)

  .From(NW.Order)

  .Where(NW.Order.CustomerID.In(qryCustomer));

 

InsertQuery insOrder = OQL

  .InsertInto(NW.Order)

  .Select(qryOrder);

The preceding OQL can be written in the way of object expression as follows:

InsertQuery insOrder = OQL

  .InsertInto(NW.Order)

  .SelectWhere(NW.Order == (NW.Customer.ContactTitle == "Owner"));

The previous Insert statement will generate the following SQL:

The SQL statements generated as follows (taking SQL Server as an example)

INSERT INTO

  [Orders]

SELECT [Orders].*

FROM [Orders]

WHERE

  [Orders].[CustomerID] IN

    (

      SELECT [Customers].[CustomerID]

      FROM [Customers]

      WHERE

        [Customers].[ContactTitle] = 'Owner'

    )

Related Topics

Insert Statement