J'utilise IDS 11.70. Je veux être en mesure d'obtenir le nombre de colonnes dans une table temporaire, donc dans le code 4gl/genero, je peux avoir une fonction qui place le bon nombre de points d'interrogation dans une instruction 'mettre un curseur'.Informix: compte le nombre de colonnes dans une table temporaire?
Par exemple, veulent remplacer ce genre de code:
declare put_curs1 cursor for
insert into my_temp_table values(?,?,?,?,?,?)
Avec quelque chose comme ceci:
let str = "insert into my_temp_table values (
format_place_holder_string_for_insert("my_temp_table") CLIPPED, ")"
prepare put_stment1 from str
declare put_curs1 cursor for put_stment1
Nous le faisons déjà pour nos tables régulières, donc si le schéma de la table doit être changé pour avoir plus ou moins de colonnes alors le code ne rompra pas avec le mauvais nombre de colonnes sur les insertions en utilisant les curseurs put. Dans cette fonction pour les tables régulières, pour obtenir le nombre de colonnes que nous utilisons:
select count(*)
from systables, syscolumns
where systables.tabname = table_name
and systables.tabid = syscolumns.tabid
Mais en essayant de le faire pour les tables temporaires, je ne vois pas ce que je me joins ou quelle colonne indique le nombre de colonnes sont dans la table temporaire. Voilà ce que j'ai jusqu'à présent:
select *
FROM sysmaster:systabnames n, sysmaster:systabinfo i, sysmaster:syssessions s
WHERE sysmaster:bitval(i.ti_flags, "0x0020") = 1
AND n.dbsname = database_name
AND i.ti_partnum = n.partnum
AND s.sid = dbinfo("sessionid")
AND n.tabname = table_name;
Ainsi, au lieu de select *
j'ai besoin select count(columns)
- mais où dois-je me joins à donc je peux compter les colonnes? J'ai fouillé autour mais ne peux pas trouver la jointure dont j'ai besoin.
Merci, Bryce Stenberg
Bonjour Jonathan, dans notre environnement, nous n'utilisons aucun ESQL/C donc je ne serai pas en mesure de mettre en œuvre votre solution. Nous utilisons seulement Genero pour notre codage. La base de données doit savoir quelles colonnes sont dans les tables temporaires quelque part, peut-être quelqu'un sait où le trouver ... Merci pour votre réponse. Cordialement, Bryce Stenberg. – user1840734