我使用的是IDS 11.70。Informix:計數臨時表中的列數?
我希望能夠獲得臨時表中的列數,因此在4gl/genero代碼中我可以有一個函數,將正確數量的問號放入「放置遊標」語句中。
例如,要替換這種代碼:
declare put_curs1 cursor for
insert into my_temp_table values(?,?,?,?,?,?)
像這樣的東西:
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
我們已經做到這一點對於我們普通表,因此,如果表架構應更改爲具有更多或更少的列,那麼代碼將不會因使用放置遊標而插入的列數錯誤而中斷。 在此功能常規表,讓我們使用的列數:
select count(*)
from systables, syscolumns
where systables.tabname = table_name
and systables.tabid = syscolumns.tabid
但在試圖做到這一點對於臨時表,我什麼也看不見我加入或什麼列表示有多少列在臨時表中。這是我到目前爲止有:
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;
所以不是select *
我需要select count(columns)
- 但我在哪裏加盟,所以我可以算列?我戳了一下,但無法找到我需要的連接。
感謝, 布萊斯Stenberg發明
嗨喬納森,在我們的環境中,我們不使用任何ESQL/C,所以我將無法實現您的解決方案。我們只使用Genero進行編碼。數據庫必須知道某個地方的臨時表中有哪些列,可能有人知道在哪裏找到它......謝謝您的回覆。問候,布萊斯Stenberg。 – user1840734 2013-03-20 02:37:48