【发布时间】:2013-03-19 23:34:00
【问题描述】:
我使用的是 IDS 11.70。
我希望能够获取临时表中列数的计数,因此在 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
我们已经为我们的常规表执行了此操作,因此如果应该将表架构更改为包含更多或更少的列,那么代码不会因使用 put 游标插入错误的列数而中断。 在常规表的此函数中,要获取我们使用的列数:
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 count( columns ) 而不是select * - 但是我应该加入哪里才能计算列数?我四处寻找,但找不到我需要的加入。
谢谢, 布莱斯·斯坦伯格
【问题讨论】:
标签: informix