当前位置: 首页 > 面试题库 >

如何从all_tables中选择表?

田冥夜
2023-03-14
问题内容

我有以下表名称模板,例如,一对夫妇,名字和数字相同:fmj.backup_semaforo_geo_THENUMBER,例如:

select * from fmj.backup_semaforo_geo_06391442
select * from fmj.backup_semaforo_geo_06398164
...

可以说我需要从每个表中选择一列,该表以’fmj.backup_semaforo_geo_%’过滤器成功执行,我尝试这样做:

    SELECT calle --This column is from the backup_semaforo_geo_# tables
     FROM (SELECT table_name
      FROM all_tables
     WHERE owner = 'FMJ' AND table_name LIKE 'BACKUP_SEMAFORO_GEO_%');

但是我正在获取all_tables表名称数据:

TABLE_NAME
----------
BACKUP_SEMAFORO_GEO_06391442
BACKUP_SEMAFORO_GEO_06398164
...

我如何在不获取all_tables输出的情况下实现这一目标?

谢谢。


问题答案:

大概您当前的查询正在获取ORA-00904: "CALLE": invalid identifier,因为子查询没有名为的列CALLE。不幸的是,您不能在运行时那样为查询提供表名,而必须诉诸于动态SQL。

这样的事情将遍历所有表,并且对于每个表都会CALLE从每个表中获取所有值,然后您就可以遍历这些表。我曾经DBMS_OUTPUT显示过它们,假设您是在SQL * Plus或其他可以处理的事情中html" target="_blank">执行的;但您可能想对他们做其他事情。

set serveroutput on

declare
    -- declare a local collection type we can use for bulk collect; use any table
    -- that has the column, or if there isn't a stable one use the actual data
    -- type, varchar2(30) or whatever is appropriate
    type t_values is table of table.calle%type;
    -- declare an instance of that type
    l_values t_values;
    -- declare a cursor to generate the dynamic SQL; where this is done is a
    -- matter of taste (can use 'open x for select ...', then fetch, etc.)
    -- If you run the query on its own you'll see the individual selects from
    -- all the tables
    cursor c1 is
        select table_name,
            'select calle from ' || owner ||'.'|| table_name as query
        from all_tables
        where owner = 'FMJ'
        and table_name like 'BACKUP_SEMAFORO_GEO%'
        order by table_name;
begin
    -- loop around all the dynamic queries from the cursor
    for r1 in c1 loop
        -- for each one, execute it as dynamic SQL, with a bulk collect into
        -- the collection type created above
        execute immediate r1.query bulk collect into l_values;
        -- loop around all the elements in the collection, and print each one
        for i in 1..l_values.count loop
            dbms_output.put_line(r1.table_name ||': ' || l_values(i));
        end loop;
    end loop;
end;
/


 类似资料:
  • 我有一个超文本标记语言选择框,在我的jsp中启用了多选择。我从其他按钮动态填充选项。因此,用户不会从该选择框中选择任何值。我必须将selectbox的所有值传递给其他jsp。 我正在使用表单操作提交浏览jsp。这样做时,我无法获得所有的选择框值。 此选项仅提供该多选框中的选定值。我想要的是从selectbox中获取所有值,无论是否选中。 谢谢

  • 问题内容: 我有这样的桌子 和包含年和月行的表 如何从的更改中选择 ? 我输入这个查询 #1064-您的SQL语法有误;检查与您的MySQL服务器版本对应的手册以获取正确的语法,以在第1行的’SELECT CONCAT(’changes’,year,month)FROM changes)’附近使用 问题答案: 您打开1 并关闭2 。删除最后一个: 编辑 第二个语句应该是 那行得通,但是不确定那是否

  • 问题内容: 我正在尝试从以下查询中获取行数。我只得到行计数为1,但有35条记录。您能否让我知道如何从内部查询中获取计数? 谢谢 问题答案: 您缺少FROM,需要为子查询指定别名。

  • 问题内容: 您好,有人可以告诉我此查询出了什么问题。 我得到的错误是 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以获取在’(@json,’$ [*]’COLUMNS(name VARCHAR(40)PATH’$ .name’,’在第1行 仅出于信息目的,我使用TOAD作为工具将sql实例连接到云。 问题答案: 首先,在这种情况下,您无需在mysql中声明变量。只需使用“ SE

  • 我的目标是创建一个函数,从给定的IP范围中选择一个IP地址。 目前我正在使用此功能: 我知道此函数只生成IP范围,但是在生成该范围后如何选择IP? 示例:我拥有给定的IP范围93.118.193.0-93.118.193.255。在此范围内,自动获取一个(例如:93.118.193.83)并将其设置为“远程地址”属性。如果已经设置了IP,则随机获取另一个IP(以便两个“远程地址”相同)。 我尝试使

  • 在这里json 如何使用库boost获得更新的值4? 我知道怎么取这样一个“ts”值。但是我不明白如何取两个括号的值