首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将模式名和表名作为输入,然后在plsql中获得内存大小和row_count作为输出

在PL/SQL中,可以使用动态SQL语句和数据字典视图来实现根据模式名和表名获取内存大小和行数的功能。

下面是一个实现此功能的示例代码:

代码语言:txt
复制
CREATE OR REPLACE PROCEDURE get_memory_size_and_row_count(p_schema_name VARCHAR2, p_table_name VARCHAR2, p_memory_size OUT NUMBER, p_row_count OUT NUMBER) AS
  v_sql VARCHAR2(1000);
BEGIN
  -- 构建动态SQL语句
  v_sql := 'SELECT BYTES, NUM_ROWS FROM ALL_TABLES WHERE OWNER = ''' || p_schema_name || ''' AND TABLE_NAME = ''' || p_table_name || '''';

  -- 执行动态SQL语句并获取结果
  EXECUTE IMMEDIATE v_sql INTO p_memory_size, p_row_count;
END;
/

使用示例:

代码语言:txt
复制
DECLARE
  v_memory_size NUMBER;
  v_row_count NUMBER;
BEGIN
  -- 调用存储过程并传入模式名和表名
  get_memory_size_and_row_count('SCHEMA_NAME', 'TABLE_NAME', v_memory_size, v_row_count);

  -- 输出结果
  DBMS_OUTPUT.PUT_LINE('Memory Size: ' || v_memory_size || ' bytes');
  DBMS_OUTPUT.PUT_LINE('Row Count: ' || v_row_count);
END;
/

解释:

  1. 创建一个名为get_memory_size_and_row_count的存储过程,该过程接收模式名和表名作为输入参数,并将内存大小和行数作为输出参数返回。
  2. 在存储过程内部,构建动态SQL语句,使用ALL_TABLES数据字典视图查询指定模式和表的内存大小和行数。
  3. 使用EXECUTE IMMEDIATE语句执行动态SQL语句,并将查询结果赋值给输出参数。
  4. 在主程序中声明两个变量,用于接收存储过程的输出参数。
  5. 调用存储过程并传入模式名和表名。
  6. 使用DBMS_OUTPUT.PUT_LINE语句输出内存大小和行数的结果。

注意:上述示例代码中,使用了ALL_TABLES数据字典视图来获取表的内存大小和行数。在实际应用中,可以根据具体的需求使用其他相关的数据字典视图或系统表。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PLSQL的使用「建议收藏」

执行快捷键为:F8 有的老版本执行语句的按钮是这个样子: (真丑) 1.5PLSQL中查看数据库表结构 在如下界面,按住Ctrl键并将鼠标移动到一个表名,此时表名变了颜色并出现下划线: 点击表名,...便可显示表结构,如下图: 1.6PLSQL中SQL语句的注释 或者按照如下方法: 1.7 对查询结果进行修改、插入行、删除行并保存 修改 在SELECT语句后加FOR UPDATE,再执行,结果如下...导入表格数据 直接在Excel表中复制行,粘贴到PLSQL的查询结果区即可。...存储过程的测试 首先找到存储过程(Package bodies),点击右键选择“Edit Spec & Body”,如下图: 进入“包”后,选择要测试的存储过程点击右键,选择“Test”,如下图: 在存储过程测试页面下方是该存储过程中定义的输入和输出变量...填写输入变量,点击左上角键 和键 ,执行存储过程。 :编译。 :单步执行。 :执行到下一断点。 :进入方法。 :跳出方法。

9.9K11

如何使用python计算给定SQLite表的行数?

计算 SQLite 表中的行数是数据库管理中的常见任务。Python凭借其强大的库和对SQLite的支持,为此目的提供了无缝的工具。...在本文中,我们将探讨如何使用 Python 有效地计算 SQLite 表中的行,从而实现有效的数据分析和操作。...在本文结束时,您将拥有从任何 SQLite 表中检索行计数的知识和工具,使您能够在项目中做出明智的决策和优化。 首先确保 Python 和 SQLite 库作为先决条件安装。...参数化查询 在前面的示例中,我们使用字符串内插直接将表名插入到 SQL 查询字符串中。但是,如果表名由用户输入提供,则这可能会导致 SQL 注入漏洞。...cursor.execute(query, (table_name,)) 通过使用占位符(在本例中为 ?)并将表名称作为单独的参数传递,可以确保正确清理表名并防止任何潜在的 SQL 注入攻击。

48120
  • SQL定义表(一)

    默认模式名称在执行DDL操作(例如创建或删除表、视图、触发器或存储过程)时,会提供一个非限定名称作为默认的模式名。 架构搜索路径值将被忽略。...在系统管理中,选择Configuration,然后选择SQL和对象设置,然后选择SQL。 在这个屏幕上,可以查看和编辑当前系统范围内的默认模式设置。 这个选项设置系统范围的默认模式名。...表名每个表在其模式中都有一个唯一的名称。 一个表有一个SQL表名和一个对应的持久化类名; 这些名称在允许的字符、区分大小写和最大长度方面有所不同。...试图指定“USER”或任何其他SQL保留字作为表名或模式名会导致SQLCODE -312错误。 要指定SQL保留字作为表名或模式名,可以指定名称作为带分隔符的标识符。...当表名转换为对应的持久化类名时,删除超过220个字符时,模式和表名的组合长度可以超过220个字符。RowID字段在SQL中,每条记录都由一个唯一的整数值标识,这个整数值称为RowID。

    1.3K10

    Linux中PLSQL视频,PLSQL使用视频教程:PLSQL的使用方法「建议收藏」

    不少小伙伴对PLSQL的应用还不是很了解,大家不必担心,在PLSQL使用视频教程中会告诉大家如何使用PLSQL。...初次登录PLSQL: 登录信息保存功能设置: 这样第一次通过用户名/密码登录某数据库后,下次就不用再输入用户名/密码了。...执行快捷键为:F8 有的老版本执行语句的按钮是这个样子: PLSQL中查看数据库表结构 在如下界面,按住Ctrl键并将鼠标移动到一个表名,此时表名变了颜色并出现下划线: 点击表名,便可显示表结构,...导入表格数据 直接在Excel表中复制行,粘贴到PLSQL的查询结果区即可。...(注意Excel中多加一列) 存储过程的新建、保存、测试 左边“Packages”点击右键,选择“New”,新建存储过程,右边自动创建“包”和“包体”: 点击“F8”键,执行存储过程并自动保存。

    1.2K10

    用于修改配置的存储过程 | 全方位认识 sys 系统库

    在本系列中前面用了大量篇幅介绍完了 sys 系统库的视图,利用这些视图我们可以方便快捷地查询到performance_schema、information_schema下的内容,但对于performance_schema...ROW_COUNT()函数作为返回值,该函数只记录实际发生变更的行) 传入的参数字符串使用 like %in_pattern%;的形式模糊匹配setup_instruments表的name字段 参数:...,调用时传入值作为存储过程内部语句的name字段值,修改enabled和timed字段为YES,返回一个已启用的instruments数量(已经处于启用状态的instruments不会计数,因为是使用ROW_COUNT...not in ('xxx'...)来删除除了默认配置行之外的配置行,然后按照默认的配置行字段值重新更新这些默认配置行(使用delete,INSERT IGNORE INTO语句),对于threads表...()存储过程需要在同一个会话中执行,因为配置是保存在TEMPORARY表中,另外,如果在执行了sys.ps_setup_save()存储过程之后没有调用sys.ps_setup_reload_saved

    1.7K30

    连接远程数据库ORACLE11g,错误百出!

    在Net Manager或者NCA中更改监听或者服务名的信息后可能会映射到这两个文件,例如我在Net Manager中更改了LISTEN的地址,在listener.ora文件中是有体现的,可以打开看看,...,将它复制到任意位置,例如:D:\PLSQL Developer 12\ 在D:\PLSQL Developer 12\instantclient_12_2中(以下简称{instantclient})新建文件夹...然后,在connection中安装图示设置,instantclient的位置。 ? 很重要的一步,到虚拟机注册表中查看NLS_LANG的值,若无此路径则直接查找NLS_LANG,复制此键值。 ?...重新打开PLSQL DEV,尝试连接,填写用户名密码,database下拉框中如果没有出现之前在tnsnames.ora首行写的名字STD,就手动输入STD,并作为SYSDBA连接。...至于最后一个问题,请检查环境变量中的NLS_LANG的值是否和远程主机注册表中的值相同,切记不要手敲!如果还是这个问题,可能是你刚配置完环境变量,cmd的命令框还是之前开的,请重开一个cmd再次尝试。

    80400

    问题小结

    一.单元格换行问题report_res\skin\table.css下.ss{word-break: break-all;line-height:1;}在单元格属性,WEB相关设置,CSS样式名里添加ss...,选择不作为表达式处理。...二.在皕杰报表单元格中显示特殊字符在使用皕杰报表的时候经常遇到特殊字符的输入,比如显示小方块或小方块里带√号,那么这些特殊符合如何输入呢?...三.如何改变报表在页面显示的大小和位置?报表在页面显示的大小和位置可以通过在URL后面添加servlet参数的方式来控制。...控制页面大小的参数有两个,一个是rptwidth,一个是rptheight,分别代表报表在页面的输出宽度和高度,支持像素和百分比。控制报表在页面位置的参数有一个,hlayout。

    40560

    连接远程数据库ORACLE11g,错误百出!

    在Net Manager或者NCA中更改监听或者服务名的信息后可能会映射到这两个文件,例如我在Net Manager中更改了LISTEN的地址,在listener.ora文件中是有体现的,可以打开看看,...,将它复制到任意位置,例如:D:\PLSQL Developer 12\ 4.在D:\PLSQL Developer 12\instantclient_12_2中(以下简称{instantclient}...7.然后,在connection中安装图示设置,instantclient的位置。 ? 8.很重要的一步,到虚拟机注册表中查看NLS_LANG的值,若无此路径则直接查找NLS_LANG,复制此键值。...13.重新打开PLSQL DEV,尝试连接,填写用户名密码,database下拉框中如果没有出现之前在tnsnames.ora首行写的名字STD,就手动输入STD,并作为SYSDBA连接。...至于最后一个问题,请检查环境变量中的NLS_LANG的值是否和远程主机注册表中的值相同,切记不要手敲!如果还是这个问题,可能是你刚配置完环境变量,cmd的命令框还是之前开的,请重开一个cmd再次尝试。

    1.6K00

    SQL使用(一):如何使用SQL语句去查询第二高的值

    SQL查询应该返回 200 作为第二高的薪水。...,可以使用max和min去查询出来,但对于第N的就不好找了,思考了一会儿了,心里大致有二个思路: 第一个思路,因为是求的第二高,那就把最高的找出来,小于的它的,然后再排列一下取最大的就行了 # 1、求最大的值...这道题主要考察的知识点就是LIMIT的使用和对NULL的处理,之前写过一篇与LIMIT有关的文章,LIMIT在实际使用过程使用情况非常普遍。...row_count 表示 返回的记录数 # offset为偏移量,表示从哪条数据开始返回,使用过程中也可以省略 举例: 1、查询出雇员表中的5条记录 select * from Employee limit...最后给大家留一个变种之后难度更高的题,欢迎大家在留言区中给出答案: 编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。

    5.7K10

    Soda Core:最简单的开源数据可靠性工具

    数据可靠性对于在当今数据驱动的业务环境中取得成功至关重要。它有助于企业做出明智的决策、高效运营、遵守法规、满足客户需求以及获得竞争优势。...它利用用户定义的输入来准备 SQL 查询,对数据源中的数据集运行检查,以查找无效、丢失或意外的数据。当检查失败时,它们会显示您在检查中定义为“不良”的数据。...当您使用 Soda Core 对源中的数据运行扫描时,可以在扫描命令中引用配置和检查 YAML 文件。...二、使用 Soda Core 的端到端数据可靠性项目 数据库和 Soda 核心配置 在这个项目中,我将使用我本地的Postgres数据库作为主要数据源来连接和扫描。...另外,我将演示在同一个 check.yml 文件中,我们可以一次检查多个表。

    91330

    Oracle中如何创建数据库

    在使用MySQL或SQLServer时,我们不需要去关心它们的逻辑结构和物理结构。 但是在使用Oracle的时候,我们必须明白Oracle逻辑结构和物理结构。...(MARK 补充这部分知识) 在逻辑结构中,Oracle从大到下,分别是如下的结构:数据库实例 -> 表空间 -> 数据段(表) -> 区 -> 块。...也就是说当我们要使用Oracle作为项目的数据库时,我们需要先创建数据库实例,之后创建表空间,再创建相对应的表(也就是逻辑结构中的数据段)。...二、创建表空间 创建表空间必须先登录数据库,你可以使用Oracle自带的sqlplus或plsql登录(当然还可以用OEM)。这里用plsql登录。...即使你在创建表空间的时候输入的表空间名是小写的,也还是要大写。因为ORACLE在存储表空间的时候自动将名字转化成大写了。

    5.4K31

    数据库系统:第三章 关系数据库标准语言SQL

    如果没有指定式名> ,则式名> 隐含等于 要创建模式,调用该命令的用户必须拥有DBA权限,或者获得了DBA授予的CREATE SCHEMA权限(安全性)。...模式与表 每个基本表都属于某个模式,一个模式包含多个基本表,定义基本表有三种方式定义其所属模式: 在表名中明显的给出模式名 创建模式时同时创建表 设置所属的模式,在创建表时不必给出模式名,类似缺省。...创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据搜索路径来确定该对象所属的模式,搜索路径包含一组模式列表,关系数据库管理系统会使用模式列表中第一个存在的模式作为数据库对象的模式名,若搜索路径中的模式名都不存在...] ; 表名>是要修改的基本表; ADD 子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件; DROP COLUMN 子句用于删除表中的列: 如果指定了 CASCADE 短语,则自动删除引用了该列的其他对象...建立索引 CREATE [UNIQUE] [CLUSTER] INDEX 名> ON 表名>([][,[] ]…); 用表名>指定要建索引的基本表名字 索引可以建立在该表的一列或多列上

    2.7K10

    SqlAlchemy 2.0 中文文档(三十九)

    作为最佳实践,请确保数据库的“默认”模式只是一个单一名称,而不是名称列表;对于属于此“默认”模式并且可以在 DDL 和 SQL 中不带模式限定命名的表,请将相应的Table.schema和类似的模式参数设置为它们的默认值...一些数据库,如 PostgreSQL,将这个概念进一步扩展为 模式搜索路径,在特定数据库会话中可以考虑多个模式名称为“隐式”;引用其中任何一个模式中的表名都不需要存在模式名称(与此同时,如果模式名称存在...作为最佳实践,请确保数据库的“默认”模式只是一个单一名称,而不是名称列表; 对于属于此“默认”模式并且可以在 DDL 和 SQL 中无需模式限定名称的表,将相应的 Table.schema 和类似的模式参数设置为其默认值...Table对象的应用程序中造成问题,以及在迁移场景中,特别是在使用 Alembic 迁移检测新表和外键约束时。...作为最佳实践,请确保数据库的“默认”模式只是一个单一的名称,而不是名称列表;对于属于此“默认”模式且可以在 DDL 和 SQL 中不带模式限定命名的表,将相应的 Table.schema 和类似的模式参数设置为它们的默认值

    42610

    Web-第二十四天 Oracle学习【悟空教程】

    它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。...DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。 DCL(数据库控制语言):它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户 组对数据库对象的访问。...FROM 表名 别名,表名1 别名 {WHERE 限制条件 ORDER BY 排序字段 ASC|DESC...} 范例:查询员工表和部门表 ?...我是1'); end if; end; 范例2:如果从控制台输入1则输出我是1否则输出我不是1 declare mynum number := # begin if mynum = 1...但过程和函数都可以通过out指定一个或多个输出参数。我们可以利用out参数,在过程和函数中实现返回多个值。

    1.9K20

    一个数据开发人员使用的辅助工具

    介绍 需求背景: 有很多业务系统,他们的数据库是相互独立的,俗称数据孤岛,为了做数据统计分析,就需要把这些数据归集在一个数据库中,比如数据仓库,然后多表关联查询,方便开发数据应用。...希望能有这样的工具,指定两个数据库和表名,就可以将表从源数据库拷贝到目标数据库中。具体需求如下: 能自动同步表结构,如:源表加字段,目标表自动加字段。...支持主流的关系型数据库: mysql、db2、postgresql、oracle、sqlserver 源表和目标表表名可以不同,字段名也可以不同(已存在目标表的情况下) 因为自己要用,我就自己写了一个,...,然后再创建一个 config 目录,在 config 下新建一个 config.json 文件写入配置信息,然后将这个目录压缩,就可以传到服务器运行了,请注意先充分测试,jdk 要求 1.8+ [aaron...toSchema 写入数据表的模式名,可以填写 "",可以和 fromSchema 不同. toTable 写入数据表的表名,必须提供,当写入表不存在时,自动按读取表的表结构创建,可以和 fromTable

    86730
    领券