VALUES INTO sentencia
La sentencia VALUES INTO asigna uno o más valores a las variables de lenguaje principal.
Invocación para VALUES INTO
Esta sentencia sólo puede incorporarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámicamente.
Autorización para VALUES INTO
- El privilegio SELECT en cada tabla y vista identificada en la sentencia
- Propiedad de cada mesa y vista identificada en la declaración
- Privilegios de LECTURA y ESCRITURA en cualquier variable global que se identifique en la declaración
- Propiedad de cualquier variable global que se identifique en la declaración
- Autoridad DBADM para la base de datos (solo tablas)
- Autorización DATAACCESS
- Autorización SYSADM
- Autorización SYSCTRL (sólo tablas de catálogo)
Para una asignación a una variable global o a un elemento de una variable global de matriz, el conjunto de privilegios debe incluir al menos uno de los siguientes:

- El privilegio WRITE en la variable
- Propiedad de la variable
- Autorización DATAACCESS
- Autorización SYSADM

Para una asignación a una variable de transición, el conjunto de privilegios debe incluir al menos uno de los siguientes:

- El privilegio UPDATE en la tabla o vista en la que se define el desencadenador que contiene la sentencia de asignación
- El privilegio ACTUALIZAR en la columna correspondiente a la variable de transición a la que se le asignará un valor
- Propiedad de la tabla o vista en la que se define el desencadenador que contiene la instrucción de asignación
- Autoridad DBADM en la base de datos que contiene la tabla en la que se define el desencadenador que contiene la instrucción de asignación
- Autorización DATAACCESS
- Autorización SYSADM

Se requiere autorización para cualquier expresión que se utilice en la declaración. Para más información, consulte Expresiones.
Conjunto de privilegios:
El conjunto de privilegios son los privilegios que tiene el propietario del paquete.
Sintaxis para VALUES INTO
descripción para VALUES INTO
- VALUES
- Introduce una sola fila que consta de una o más columnas. Si se especifica más de un valor, la lista de valores debe ir entre paréntesis.
- expresión
La expresión es cualquier expresión del tipo descrito en Expresiones. La expresión no debe incluir un nombre de columna.
- NULL
- El valor nulo. NULL solo se puede especificar para variables de host que tengan una variable indicadora asociada.
- EN variable de destino o variable de matriz [ índice de matriz ]
- Identifica uno o varios destinos para la asignación de los valores de salida. El número de objetivos en la cláusula INTO debe ser igual al número de valores que se van a asignar. El primer valor de la fila del resultado se asigna al primer destino de la lista, el segundo valor al segundo destino, etcétera. Una variable objetivo no debe especificarse más de una vez en la cláusula INTO. Cada asignación a un objetivo se realiza en secuencia a través de la lista, según las reglas descritas en Asignación y comparación.
El valor 'W' se asigna al campo ' SQLWARN3 ' de la SQLCA si el número de objetivos es menor que el número de valores de la columna de resultados.
Si se produce un error en cualquier asignación, el valor no se asigna al destino y no se asignan más valores a los destinos especificados. Los valores que ya se hayan asignado permanecerán asignados.
- nombre-variable-global
- Identifica la variable global que es el sujeto de la asignación.
- nombre-variable-del-alojamiento
- Identifica la variable del lenguaje principal que es el sujeto de la asignación. Para los valores de salida LOB, el destino puede ser una variable del lenguaje principal normal (si es lo suficientemente grande), una variable de localizador LOB o una variable de referencia a archivos LOB.
- Nombre del parámetro SQL
- Identifica el parámetro que es el sujeto de la asignación.
- nombre-variable-SQL
- Identifica la variable de SQL que es el sujeto de la asignación. Las variables de SQL se deben declarar antes de utilizarlas.
nombre-variable-de-transición
FL 500Identifica la columna que debe actualizarse en la tabla de transición. Un nombre de variable de transición debe identificar una columna en la tabla de asunto de un desencadenante, opcionalmente cualificada por un nombre de correlación, que identifique el nuevo valor.
- variable-matriz [í nd ice-matriz]
- Especifica un elemento de matriz que es el objetivo de la asignación.
No debe especificarse un elemento de matriz como destino de una asignación si también se especifica una expresión de tabla común en la sentencia.
- variable de matriz
- Especifica una variable de matriz.
- [array-index ]
- Expresión que especifica qué elemento de la matriz es el destino de la asignación.
Para una matriz ordinaria, la expresión del índice de la matriz debe ser convertible a INTEGER y no debe ser el valor nulo. El valor del índice debe estar entre 1 y la cardinalidad máxima definida para la matriz.
Para una matriz asociativa, la expresión del índice de la matriz debe ser convertible al tipo de datos de índice de la matriz asociativa, y no debe ser el valor nulo.
array-index no debe ser:
- Expresión que hace referencia al registro especial FECHA ACTUAL, HORA ACTUAL o MARCA DE TIEMPO ACTUAL
- Una función no determinista
- Una función que se define con ACCIÓN EXTERNA
- Una función que se define con MODIFIES SQL DATA
- Una expresión de secuencia
Notas para VALUES INTO
- Asignación a objetivos:
El enésimo objetivo identificado por la cláusula INTO corresponde a la enésima columna de la tabla de resultados del cursor. El tipo de datos del destino debe ser compatible con su valor correspondiente. Si el valor es numérico, el destino debe tener la capacidad de representar la parte entera del valor. Para un valor datetime, el destino debe ser una variable de cadena de caracteres de una longitud mínima como se define en Representaciones de cadena de valores datetime. Cuando el valor que se va a asignar es nulo, se debe especificar una variable indicadora para la variable de destino.
Las asignaciones se realizan en orden a través de la lista. Cada asignación a un objetivo se realiza según las reglas descritas en Elementos de lenguaje en SQL. Si el número de objetivos es menor que el número de valores de la fila, el campo " SQLWARN3 " (valor de la columna) del SQLCA se establece en "W". No hay advertencia si hay más objetivos que el número de columnas de resultados. Si se asigna un valor nulo a una variable objetivo, se debe proporcionar una variable indicadora. Si se produce un error de asignación, el valor no se asigna al destino y no se asignan más valores a los destinos. Cualquier valor que ya se haya asignado a los destinos continúa asignado. Sin embargo, si se trata de valores LOB, existe la posibilidad de que el objetivo correspondiente se haya modificado, pero el contenido de la variable es impredecible.
Si se incluye más de una asignación en la misma declaración de asignación, todas las expresiones se evalúan antes de que se realicen las asignaciones. Por ejemplo, una referencia a una variable en una expresión siempre utiliza el valor de la variable antes de cualquier asignación en la sentencia de asignación.
Normalmente, se utilizan localizadores LOB para asignar y recuperar datos de columnas LOB. Sin embargo, debido a las reglas de compatibilidad, también puede utilizar localizadores LOB para asignar datos a objetivos con otros tipos de datos. Para obtener más información sobre el uso de localizadores, consulte Ahorro de almacenamiento al manipular LOB mediante el uso de localizadores de LOB.
- Esquema de codificación predeterminado:
- El esquema de codificación predeterminado para los datos es el valor de la opción de enlace ENCODING, que es la opción de codificación de la aplicación. Si esta sentencia se utiliza con funciones como LENGTH o SUBSTRING que operan sobre localizadores LOB, y los datos LOB especificados por el localizador están en un esquema de codificación diferente al de la opción de enlace ENCODING, se produce la materialización LOB y la conversión de caracteres. Para evitar la materialización de LOB y la conversión de caracteres, seleccione los datos LOB de la tabla de muestra SYSIBM.SYSDUMMYA, SYSIBM.SYSDUMMYE o SYSIBM.SYSDUMMYU.
Ejemplos de VALUES INTO
EXEC SQL VALUES(CURRENT PATH)
INTO :HV1; EXEC SQL VALUES(CURRENT MEMBER)
INTO :MEM; EXEC SQL VALUES (SUBSTR(:LOB1,1,35))
INTO :DETAILS; EXEC SQL SELECT SUBSTR(:LOB1,1,35)
INTO :DETAILS
FROM SYSIBM.SYSDUMMYU;VALUES INTVAR1 INTO MYINTARRAY1[INTCOL2+MYINTVAR+1];