Inicio > Axapta > El estamento select de X++ comparado con el estamento select del ANSI SQL

El estamento select de X++ comparado con el estamento select del ANSI SQL

Simple Select sobre una Tabla

static void OrderByWhereJob(Args _args)
{
  CustTable axCustTable;
  ;
  while
    select * from axCustTable
      order by axCustTable.AccountNum desc  
      where (!(axCustTable.Name like ‘*ant*’) 
            && axCustTable.Name like ‘T?e*’)
  {
     info(axCustTable.AccountNum + ”
          axCustTable.Name);
  }
}

  • En la clausula FROM se usa la variable Buffer de la tabla, no la tabla.
  • La clausula ORDER BY precede a la clausula SELECT.
  • Usamos ! para la negación lógica, no NOT.
  • & y || son los operadores lógicos, no AND y OR.
  • * y ? para comodines en la clausula LIKE, no % y _.

Clausula Join

static void OrderByWhereoinJob(Args _args)
{
  CustTable  axCustTable;
  SalesPool  axSalesPool;
  ;
  while
    select AccountName, Name  
      from axCustTable
        order by axCustTable.AccountNum desc  
        where (axCustTable.Name like ‘*ant*’) 
      join axSalesPool
        where axCustTable.salesPoolId ==
              axSalesPool.SalesPoolId
  {
     info(axCustTable.AccountNum + ”
          axCustTable.Name);
  }
}

  • Solo se pueden seleccionar columnas de la primera tabla nombrada en la clausula FROM (las columnas no deben de llevar cualificadores)
  • No usamos en el JOIN la palabra clave ON, simplemente lo hacemos con un WHERE.
  • El JOIN será por defecto INNER JOIN. El OUTER JOIN está también disponible.
  • La dirección del JOIN es LEFT. Se puede usar el RIGHT.
  • Un doble igual == es usado como comparador, y no un simple igual =.

Campos Calculados

static void SumJob(Args _args)
{
  PurchLine axPurchLine;
  ;
  while
    select sum(QtyOrdered)
      from axPurchLine
  {
    info(“Cantidad: ” +
          num2str(axPurchLine.QtyOrdered, 3,2,1,3);
  }

}

  • Debemos referirnos al campo calculado con el nombre de su columna, ya que este no puede llevar un Alias.

Otras diferencias

  • El estamento WHILE SELECT del SQL de X++, nos proporciona un cursor automático para las filas devueltas.
  • No disponemos de la palabra clave HAVING, que en ANSI SQL permite indicar un filtro a las filas devueltas con una clausula GROUP BY.
  • Los valores nulos (Null) no serán devueltos. Si un valor es nulo, la fila es ignorada( tanto por WHILE como por NEXT).
  • La clausula FROM es opcional cuando no indiquemos columnas (usemos *), o solo una tabla participa en en SELECT. En X++ es lo mismo decir estas dos sentencias:

    select * from Custtable;

    select CustTable

Anuncios
Categorías:Axapta
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: