【发布时间】:2016-09-10 18:49:54
【问题描述】:
我想从一个表中返回所有行和字段,其中表名和字段名都事先不知道。比如:
select * from [TABLENAME]
这另一种方法看起来很有希望,但select * from test_cursor 给出“尝试访问类型未知的项目的行......”
https://stackoverflow.com/a/101064/209942
EXECUTE IMMEDIATE 似乎很有希望,但我读到返回多行需要一个游标,我找不到一个例子。
更喜欢一种非常简单和快速的解决方案(即,希望避免逐行处理)。
希望避免创建函数或过程,但也许这是不可避免的。也许我需要使用表函数?
可能类似于以下内容?
CREATE OR REPLACE FUNCTION GetTable(table_name CHAR)
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE temp_table
AS (SELECT * FROM :1)' USING table_name;
END;
SELECT * FROM table (temp_table)
谢谢
【问题讨论】:
-
检查包DBMS_SQL,在那里你可以做完整的动态SQL语句。
标签: sql database oracle select plsql