在 plsql 中立即执行

2024-05-31

如何从这段代码中得到结果

EXECUTE IMMEDIATE 'SELECT * FROM ' || table_name

through for loop

通常的方法看起来像这样

for items in (select * from this_table)
loop
htp.p(items.id);
end loop;

If you really需要select * from 动态表名,那么我可能会选择dbms_sql

键入一个record:

create type tq84_varchar2_tab as table of varchar2(4000);
/

键入一个结果集(这是一个数组records):

create type tq84_varchar2_tab_tab as table of tq84_varchar2_tab;
/

该函数执行选择并返回一个实例结果集:

create or replace function tq84_select_star_from_table(table_name in varchar2) 
    return tq84_varchar2_tab_tab
as
    stmt_txt     varchar2(4000);
    cur          number;
    columns_desc dbms_sql.desc_tab;
    column_cnt   number;

    result_set   tq84_varchar2_tab_tab;

begin

    stmt_txt := 'select * from ' || table_name;    

    cur := dbms_sql.open_cursor;

    dbms_sql.parse(cur, stmt_txt, dbms_sql.native);
    dbms_sql.describe_columns(cur, column_cnt, columns_desc);
    dbms_sql.close_cursor(cur);


    stmt_txt := 'select tq84_varchar2_tab(';

    for i in 1 .. column_cnt loop 

        if i != 1 then
           stmt_txt := stmt_txt || ',';
        end if;

        stmt_txt := stmt_txt || columns_desc(i).col_name;

    end loop;

    stmt_txt := stmt_txt || ') from ' || table_name;

--  dbms_output.put_line(stmt_txt);

    execute immediate stmt_txt 
    bulk collect into result_set;

    return result_set;


end tq84_select_star_from_table;

然后该函数可以与以下内容一起使用:

declare
  records   tq84_varchar2_tab_tab;
begin

  records := tq84_select_star_from_table('user_objects');

  for i in 1 .. records.count loop
      dbms_output.put_line (records(i)(5) || ': ' || records(i)(1));
  end loop;

end;
/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 plsql 中立即执行 的相关文章

  • 将 Linq 表达式转换为 SQL Server 查询

    我正在使用一些 crm 框架 该框架没有任何内部 orm 并且不使用实体框架 仅使用纯 sql 查询 我在数据库中的每个表都有实体 所以我有例如 public class Customer public string FirstName g
  • 我应该对表进行分区/子分区吗?

    Case 系统有dispositives 基本上由id type name 我可能有N个dispositives 我有一张桌子来存放log of all dispositives 这是系统中最大的表 现在统计100英里记录 The log表
  • SQL查询获取列的精度值

    我需要一个 SQL 查询来获取某些列的精度值 我主要关心十进制类型列 并且我需要相同的精度值 我意识到在某些版本和数据库服务器供应商中可以这样做 如果您能列出其中的一些 那就太好了 对于 SQL 服务器 select precision f
  • 是否可以在 Hibernate 中使用分析函数?

    有没有办法在 Hibernate 中使用类似 sql server 的分析函数 就像是 select foo from Foo foo where f x max f x over partition by f y 您正在寻找本机 SQL
  • 当 SQL 包含变量时在 pgAdmin 中调试 SQL

    在 SQL Server 中 我可以从应用程序中复制 sql 代码并将其粘贴到 SSMS 中 声明并分配 sql 中存在的变量并运行 是的 很棒的调试场景 例如 请注意 我很生疏 语法可能不正确 declare x as varchar 1
  • SQL CASE 语句

    我有以下查询 我想将它们放入 sql CASE 语句中 这样我只有一个查询 但我不知道该怎么做 有人可以帮助我吗 IF SELECT EtlLoadId FROM ssislogs audit processcontrol WHERE Su
  • 如何查看所有者是否有权在 Oracle 中执行存储过程

    我需要验证我的所有者是否有权执行存储过程 但我必须在 sys 表上进行搜索 我可以在哪个表中找到它 谢谢你 与它的名称相反 DBA TAB PRIVS 允许我们查看所有对象的授予权限 而不仅仅是表 select from DBA TAB P
  • 使用 START WITH 和 CONNECT BY PRIOR 将查询从 oracle 迁移到 postgresql

    我正在将一个进程从 oracle 迁移到 postgresql 并且在它们的转换方面遇到了另一个问题 我一直在研究如何迁移oracle查询 它有 START WITH 和 CONNECT BY PRIOR 我已经对此进行了记录 我认为最简单
  • 如何从 tarantool 中选择有限数量的记录,就像 SQL 中的 SELECT LIMIT 一样?

    我想在 Tarantool 空间上执行选择 使用过滤和限制结果 就像我可以使用简单的 SQL 查询一样 SELECT FROM users WHERE age gt 33 LIMIT 1 我怎样才能做到这一点 可以使用 Lua 和 SQL
  • 创建触发器

    如何启动触发器 以便在未付余额超过 50 美元的情况下无人能够租借电影 这里有一个跨行表约束 即你不能只放置一个 OracleCONSTRAINT在列上 因为它们一次只能查看一行中的数据 Oracle 仅支持两种跨 行约束类型 唯一性 例如
  • 将表与同一个表的前一条记录连接起来

    我有一个包含历史记录的表 由主表中的多个触发器发布到那里 我想在历史表上创建一个 select 语句 其中每个记录都由其先前的记录 由相同的 LineID 和最高的 ActionDate 标识 连接 这样我就可以提取这两者之间的差异 我尝试
  • 在两个以上的表上使用内联接删除查询

    我想使用两个以上表上的内联接从表中删除记录 假设我有表 A B C D 其中 A 的 pk 在所有其他提到的表中共享 然后如何编写删除查询以使用表 B 和 A 上的内联接从表 D 中删除记录 因为条件是从这两个表中获取的 我需要从 DB2
  • 从 Visual Studio 调试 SQL Server 2005 中的存储过程?

    我在这里和其他地方看到很多令人沮丧的问题 但没有明确的答案 我试图让存储过程进行调试 但没有成功 客户端 VS2005或VS2008 两者都不起作用 当我从存储过程上下文菜单中选择 步入存储过程 时 我在调试窗口中看到 已被用户取消 这就是
  • MySQL 多个 IN 条件对同一个表进行子查询

    我有多个带有子查询的 IN 条件 SELECT S name S email FROM something S WHERE 1 NOT IN SELECT id FROM tags WHERE somethingId S id AND 2
  • 如何在不使用 DESCRIBE 命令的情况下描述 Oracle 中的表?

    我在上一门课时遇到了困难 我们需要编写一个 Oracle 脚本 其作用就像 DESCRIBE 命令一样 我们正在使用的这本书对如何使用数据字典的描述非常糟糕 不是寻找答案 而是寻找正确的方向 您正在寻找USER TAB COLUMNS ht
  • 如何编辑表以启用级联删除?

    我有一个代表用户的表 当用户被删除时我得到 DELETE 语句与 REFERENCE 约束冲突 显然 CASCADE DELETE在SQL Server中并不像我想象的那么容易 需要将选项添加到表中 问题是 我不知道如何添加CASCADE
  • 通用 Oracle 数据收集存储

    我正在设计一个新的实验室数据库 我想将所有测试的原始结果存储在一起 在某些情况下 结果是单个值 然而 结果有时是原始波形或信号 下面哪种情况是理想的 以及为什么 或提供您自己的理想选择 选项 1 将每个单独的数据点存储为单独的结果行 距 t
  • 获取 SQL 表上未使用的唯一值

    我有一个表 其中有一列描述数字 ID 该 ID 对于所有行都是唯一的 但它不是主键 数字 ID 是有限的 假设答案可以是从 1 到 10 SELECT ID FROM TABLE ID 1 2 5 我必须 通过 UI 向用户呈现未使用的值
  • 简单的t-sql而不是触发器

    任何人都可以帮助解决简单的 t sql 脚本与板载触发器的问题吗 我使用非常简单的触发器将数据从一个表复制到另一个表 这些表之间没有关系 当我尝试在触发器创建后 从同一脚本 直接第一次插入数据时 我得到了所需的结果 但所有接下来的尝试都会失
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做

随机推荐

  • 该文件正在被另一个进程使用,我必须关闭它吗?如何?

    我正在使用一个文本文件来保存一些数据以供以后使用 所以我所做的就是检查文件是否存在 如果不存在 我会在需要时创建一个新文件 这给了我错误 说我的文件仍在被不同的进程使用 但我不确定为什么会这样 我就是这样做的 在这里 我正在检查程序运行时启
  • 线性问题和非线性问题之间的区别?点积和核技巧的本质

    核技巧将非线性问题映射为线性问题 我的问题是 1 线性问题和非线性问题的主要区别是什么 这两类问题的差异背后的直觉是什么 核技巧如何帮助在非线性问题上使用线性分类器 2 为什么点积在这两种情况下如此重要 Thanks 当人们说到分类问题的线
  • 将 Java pojo 转换为 json 字符串

    我有以下java类 public class TabularDescriptor extends ReportDescriptor private String generatorClass private String targetCla
  • 通过名称获取进程ID

    我想在 Linux 下获得一个给定其名称的进程 ID 有没有一种简单的方法可以做到这一点 我还没有在 C 上找到任何可以轻松使用的东西 如果追求 易于使用 char buf 512 FILE cmd pipe popen pidof s p
  • 在 Angular 中加载脚本和资源时实现加载器动画的最佳方法是什么?

    我希望向我的 Web 应用程序的用户显示一个进度条 指示加载所需文件和脚本的当前进度 最好显示百分比 但简单的加载器 gif 是一个可以接受的解决方案 如果可能的话 实现一个可以显示 Angular 中图像 CSS 和 JS 加载完成百分比
  • Inno Setup - XML 编辑 XPath 请求失败,并出现“运行时 NIL 接口异常”

    我已经为我的应用程序创建了一个 Inno Setup 脚本 其中我尝试在安装后步骤中编辑一些 XML 配置 主要是连接字符串 我有一些非常简单的 XPath 请求 但在使用时出现运行时异常selectSingleNode然而getEleme
  • 具有多个子项的 Plantuml 类图:有什么方法可以将箭头分叉吗?

    我的尝试 Animal lt Cat Animal lt Dog Result Animal Cat Dog 类图不应该是这样的 This is Animal Cat Dog 按照建议 我问这是否可以PlantUML 论坛 http for
  • API Google 地图 v3:更改 Zoom_changed 上标记的大小

    我需要有关 Google Maps API v3 的帮助 我有一张带有标记 图片 的地图 来自数据库的信息 此时的图片和地图都还可以 我想在更改缩放时调整标记的大小 但我的代码不起作用 图片消失 被默认图标取代 你能帮我看看出了什么问题吗
  • 这种模式叫什么?软锁?

    这是我有时必须编写的一些代码 大部分与 UI 内容结合使用 并且总是与可能意外陷入无限循环的事件相关 public class MyClass public event EventHandler MyEvent private bool I
  • 数据库优先方法和修改数据库模式

    我正在使用数据库优先方法使用实体框架 DbContext 构建 ASP NET MVC Web 应用程序 如果在某些情况下我需要修改数据库 例如添加新表或修改现有表 添加列或更改列数据类型 我应该 删除现有实体 edmx 和 tt 文件夹并
  • jQuery float bar 数字:数字定位

    我在用着jquery flot barnumbers js https github com joetsoi flot barnumbers 的插件jQuery 的 Javascript 绘图 图表 库 https github com f
  • 搜索TableView无法选择行

    在搜索 tableView 时 每次我尝试选择一行时 它都会返回到未搜索的 tableView 我缺少什么 当不过滤表格时 segue 工作得很好 当搜索栏被激活时 选择行的能力就会消失 import UIKit import Founda
  • AWS EC2 上的 Wordpress - 分配弹性 IP 后损坏

    所以 我安装了 WordPress 并且运行得很好 我可以通过从实例获得的公共 DNS 访问该站点和 wp admin 但是 一旦我创建了弹性 IP 并将其与实例关联 我就无法再访问 wp admin 并且主页样式表和 JavaScript
  • Chrome 浏览器上的自动文件下载限制为 10 个文件

    我有一个网页 我们根据用户对页面项目的选择生成 PDF 这会导致回发 它是一个 ASP NET WebForms 页面 从而在服务器端创建 PDF 一个 a class documentDownload 然后将标签添加到每个项目的页面 当页
  • 莫名其妙的 MissingFieldException

    在下面的代码片段中 它会抛出 MissingFieldException Field Not Found DepthBidLevels 异常 但仅在下面描述的某些奇怪情况下才会抛出 for int i DomSize 1 i gt 0 i
  • AWS Api Gateway + Lambda + 自定义域 (Route53) 缺少身份验证令牌问题

    我知道这里已经发布并回答了许多类似的问题 但没有一个与我所经历的完全相同 我有一个 Lambda 函数来处理传入请求 GET 和 POST 我还设置了一个 API 网关作为面向公众的端点 此外 我设置了以下自定义域为 API 主机名设置自定
  • 按 MAX(time) WHERE time <= x 选择最近的 MySQL 行

    我正在选择 MySQL 表的最新条目 SELECT MAX time as most recent userID FROM TableName GROUP BY userID ORDER BY most recent DESC 我的问题是
  • 在 C# 中,为什么变量没有在finally 块的开头明确赋值?

    我不明白为什么下面的代码会产生错误 通常我可以从语言规范中弄清楚事情 但在这种情况下我不理解语言规范 顺便说一句 这不会在我的代码中造成问题 我只是想理解这种语言 Example bool success try success true
  • Apache JMeter:在请求正文中添加随机数据

    我正在 Apache JMeter 中对我们的应用程序进行压力测试 我想到调用注册用户方法 该方法将在数据库中添加用户 但如果电子邮件已存在 则不会发生数据库操作 如何在身体数据中添加随机数 或者有其他方法可以对与数据库连接的应用程序进行压
  • 在 plsql 中立即执行

    如何从这段代码中得到结果 EXECUTE IMMEDIATE SELECT FROM table name through for loop 通常的方法看起来像这样 for items in select from this table l