2017-06-06 3 views
1

Est-il possible dans Informix de créer un type ROW nommé ou non nommé dans lequel vous pouvez placer une ligne issue d'un select? Je travaille dans une procédure stockée.Tenir une ligne de sélection dans une variable et accéder à ses champs avec l'instruction

Ce que je veux est quelque chose comme ceci:

DEFINE ROW rowVar; 

SELECT * INTO rowVar FROM myTableName; 

n'ont pas été en mesure de trouver la syntaxe correcte jusqu'à présent. Je veux que l'objet ligne se comporte comme s'il était SAMEAS avec les colonnes de la table.

+0

Ma réaction immédiate est 'Non'. Une brève pause pour une seconde réflexion suggère que 'si vous avez changé le '*' de façon appropriée, vous pourriez être capable de le faire'. Mais ce n'était probablement pas ce que vous aviez en tête, et il faudrait que je réfléchisse à la façon de le faire - je suppose que vous deviez lister les noms que le '*' se développe, par exemple. –

+0

SELECT INTO ne peut être utilisé que pour stocker un jeu de résultats dans une table temporaire. Une ligne ne peut exister qu'à l'intérieur d'une table, pas par elle-même. –

Répondre

0

Il n'est pas possible d'utiliser un type "indéfini" ROW dans le langage SPL (Informix Stored Procedure Language). Si vous essayez ce qui suit (en utilisant Informix 12.10.FC8DE):

CREATE PROCEDURE sp_dummy(); 
DEFINE generic_row ROW; 
END PROCEDURE; 

Il renvoie l'erreur suivante:

-999 Not implemented yet. 

Le Informix manual ne semble pas être correct:

The following statements show examples of generic ROW variables and named ROW variables:

DEFINE d ROW; -- generic ROW variable

Si vous définissez les champs du ROW, vous pouvez l'utiliser dans le SPL.