declaraciones SQL caso sobre Informix - ¿Se puede configurar más de un campo en la sección final de un bloque caso?

StackOverflow https://stackoverflow.com/questions/3971550

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;

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top