Este tag permite añadir registros a un vtable. Con la instrucción especial matrix se puede indicar una matriz, para formar un vtable. Alternativamente, si en la acción de insert se especifican todas las columnas de la vtable, es posible omitir el tag column (ver el primer de los ejemplos a continuación).

1 vtable.insert

Añade registros a una tabla virtual.

<vtable.insert
    name='name'
    prefix='prefix'
    columns='columns'
    position='position'
>
    <column name='name'> *
        <value /> !
    </column>
    <matrix date-format='date-format'> *
        <cdata> !
            <matrix /> !
        </cdata>
    </matrix>
    <select /> *
    <union /> *
    <nativesql /> *
    <in> *
        <vtable /> *
        <sqlresponse /> *
    </in>
    <values /> *
</vtable.insert>

Exceptions

attribute name required

No se ha especificado el nombre del campo de la tabla.

vtable name required

No se ha especificado el nombre de la vtable.

Example

Crea vtable e inserta.

Copy
<xsql-script name='vtable_insert_sample1'>
   <body>
       <vtable name='personas'>
           <column name='dni'       type='string' unique='true' />
           <column name='nombre'    type='string'               />
           <column name='apellido1' type='string'               />
           <column name='apellido2' type='string'               />
       </vtable>

       <vtable.insert name='personas'>
           <string>46352700Z</string>
           <string>John</string>
           <string>Smith</string>
           <string>Simpson</string>
       </vtable.insert>

       <println>
           <vtable.update name='personas' row='0'>
               <column name='nombre'><string>George</string></column>
           </vtable.update>
       </println>
   </body>
</xsql-script>

Se genera una tabla virtual de nombre personas, compuesta de cuatro columnas de tipo string: dni, nombre, apellido1 y apellido2. Posteriormente, se le inserta un registro. Con el elemento <vtable.update> se actualiza el contenido de la columna nombre ( <column name='nombre'>) del primer y único registro( row='0').

Example

Crea vtable e inserta informando nombres de columnas.

Copy
<xsql-script name='vtable_insert_sample2'>
  <body>
      <vtable name='personas'>
          <column name='dni'       type='string' unique='true' />
          <column name='nombre'    type='string'               />
          <column name='apellido1' type='string'               />
          <column name='apellido2' type='string'               />
          <column name='telefono'  type='string'               />
          <column name='fax'       type='string'               />
      </vtable>

      <vtable.insert name='personas'>
          <column name='dni'><string>46352700Z</string></column>
          <column name='nombre'><string>John</string></column>
          <column name='apellido1'><string>Smith</string></column>
          <column name='apellido2'><string>Simpson</string></column>

 <column name='fax'><string>915478795</string></column>
      </vtable.insert>

      <vtable.insert name='personas'>
          <column name='dni'><string>478887874V</string></column>
          <column name='nombre'><string>Javier</string></column>
          <column name='apellido1'><string>Pozo</string></column>
          <column name='apellido2'><string>Garra</string></column>
          <column name='telefono'><string>933724578</string></column>
      </vtable.insert>
      <println>
          <personas />
      </println>
  </body>

</xsql-script>

Obsérvese que usando el tag column para indicar la columna a la que pertenece un objeto dentro de vtable.insert es posible omitir algunas columnas (ya sea en la última posición o en otra cualquiera); el sistema inserta un valor NULL.

Example

Crea vtable e inserta en bloque un matriz de datos.

Copy
<xsql-script name='vtable_insert_sample3'>
  <body>
      <vtable name='v_art_solic'>
          <column name='delega'   type='string' />
          <column name='depart'   type='string' />
          <column name='codart'   type='string' />
          <column name='varlog'   type='string' />
          <column name='cansol'   type='decimal' />
      </vtable>

      <vtable.insert name='v_art_solic'>
          <matrix>
              { "D01", "P01", "024099", "0", "12" },
              { "D01", "P01", "024099", "0", "20" },
              { "D01", "P01", "026147", "0", "10" },
              { "D01", "P01", "026147", "0", "20" },
              { "D01", "P01", "026147", "2", "15" },
              { "D01", "P01", "026147", "2", "18" },
              { "D02", "0",   "024099", "0", "12" },
              { "D02", "0",   "024099", "0", "20" },
              { "D02", "0",   "024099", "0", "25" },
              { "D02", "0",   "024099", "0", "10" },
              { "D02", "0",   "026147", "0", "10" },
              { "D02", "0",   "026147", "3", "20" }
          </matrix>
      </vtable.insert>

      <println>
          <v_art_solic />
      </println>
  </body>

</xsql-script>
Example

Crea vtable e inserta mediante prefijo de variables.

Copy
<xsql-script name='vtable_insert_sample4'>
  <body>
      <vtable name='v_test'>
          <column name='docser' type='string'  size='16' unique='true' />
          <column name='fecha'  type='date'                            />
          <column name='imptot' type='decimal' size='14' scale='2'     />
          <column name='clasif' type='string'  size='12'               />
      </vtable>

      <set name='gcomfach_docser'>FC-000001</set>
      <set name='gcomfach_fecha'><date.today /></set>
      <set name='gcomfach_imptot'>100.55</set>

      <vtable.insert name='v_test' prefix='gcomfach_' columns='docser,fecha' />

      <println>
          <v_test />
      </println>
  </body>

</xsql-script>

En el ejemplo se insertan los valores, de las variables del prefijo especificado, de las columnas indicadas mediante el atributo columns.

Example

Crea vtable e inserta los registros devueltos por una query a tabla física.

Copy
<xsql-script name='vtable_insert_sample4'>
  <body>
      <vtable name='v_test'>
          <column name='docser' type='string'  size='16' unique='true' />
          <column name='fecha'  type='date'                            />
          <column name='import' type='decimal' size='14' scale='2'     />
      </vtable>

      <vtable.insert name='v_test'>
          <select prefix='m_'>
              <columns>
                  docser, fecha, import
              </columns>
              <from table='cefectos' />
              <where>
                  docser LIKE 'A%'
              </where>
              <order>
                  docser
              </order>
          </select>
      </vtable.insert>

      <println>
          <v_test />
      </println>
  </body>

</xsql-script>

En el ejemplo se insertan los registros devueltos por la query a la tabla cefectos.