从Oracle数据库中选择所有表名。

5
我写了一个扫描数据库中所有表名并显示的程序。
我的数据库有这些表:User、Order、History。
它应该像这样显示:"Existing Tables: User Order History"。
这个命令应该是什么样子的?
string SqlOrder="Select ??? from TestDB"

你需要执行语句,获取结果,然后在C#中进行格式化。 - CloudyMarble
2个回答

3

试试这个

SELECT 'Existing Tables: ' || wm_concat(table_name) tablenames 
  FROM user_tables;

对于示例的Oracle HR数据库,它返回:
TABLENAMES
------------------------------------------------------------------------------------
Existing Tables: REGIONS,LOCATIONS,DEPARTMENTS,JOBS,EMPLOYEES,JOB_HISTORY,COUNTRIES

更新:LISTAGG() 的示例

SELECT 'Existing Tables: ' || LISTAGG(table_name, ',') 
        WITHIN GROUP (ORDER BY table_name) tablenames 
  FROM user_tables;

LISTAGG() 也许是相关的:http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php#listagg - CloudyMarble
同意。已添加到答案中。 - peterm
这个答案完全符合我的需求,谢谢! - Sam

1

手册链接丢失,此外我猜测楼主并不是指这个。 - CloudyMarble
我理解的是他想要在表名之前获取字符串,并将表名用逗号分隔,这也可以解释为什么他会在问题中标记C#标签。 - CloudyMarble
@TwoMore:但他仍然需要以某种方式选择所有表名。 - user330315
完全正确,我对你的回答没有任何问题,但不确定它是否回答了问题,我们可能需要等待原帖作者的回复。 - CloudyMarble

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接