declaraciones SQL caso sobre Informix - ¿Se puede configurar más de un campo en la sección final de un bloque caso?
-
09-10-2019 - |
Pregunta
El uso de IBM Informix Dynamic Server Versión 10.00.FC9
Estoy mirando para fijar varios valores de campo con un bloque CASE
. es posible? ¿Tengo que volver a evaluar las mismas condiciones para cada conjunto de campo?
Yo estaba pensando en algo como lo siguiente:
SELECT CASE WHEN p.id = 9238 THEN ('string',3) END (varchar_field, int_field);
Cuando la sección THEN
definiría un 'array' de campos similar a la sintaxis de
INSERT INTO table (field1,field2) values (value1,value2)
Además, se puede hacer esto con un bloque CASE
de una instrucción UPDATE
?
UPDATE TABLE SET (field1,field2) = CASE WHEN p.id=9238 THEN (value1,value2) END;
Solución
Normalmente, yo pediría la versión de Informix que está utilizando, pero probablemente no importa mucho esta vez. La sencilla respuesta es 'No'.
Una respuesta más compleja podría discutir el uso de un constructor de tipo de fila, pero que probablemente no es lo que desea en la salida. Y, teniendo en cuenta lo anterior, la actualización no se va a trabajar (y requeriría un nivel adicional de paréntesis, si iba a).
Otros consejos
No, una declaración CASE
resuelve a una expresión (ver Guía de IBM Informix a SQL: sintaxis CASO Expresiones ) y se puede utilizar en lugares donde se permite una expresión. Una expresión es un solo valor.
desde http://en.wikipedia.org/wiki/Expression_%28programming%29
Un expresión en una programación el lenguaje es una combinación de explícita valores, constantes, variables, operadores y funciones que son interpretado de acuerdo con la reglas particulares de precedencia y de asociación para un particular, lenguaje de programación, que calcula y luego produce (devoluciones, en una ambiente stateful) otro valor.
encontrado una manera fácil de hacerlo encuentra aquí: cómo tener vista de lista fila de color para cambiar sobre la base de datos de la fila
La solución se acaba añadiendo la declaración de caso a mi instrucción SQL. Sólo criada mi vida mucho más fácil.