首页
学习
活动
专区
圈层
工具
发布

Oracle存储过程(while循环、for循环、if判断、sql拼接、游标)

N_TABLE_NAME VARCHAR2(32); --用于存放被查询表数量 NUM INT; BEGIN --给表名赋值 N_TABLE_NAME := 'TEST_AAA'; --查询库中是否有这张表...3 WHILE循环 写一个WHILE循环,用来动态拼接部分SQL(关联条件部分)。...:TIME, 0为前者,1位后者:0 当前循环数值:1 当前取到的字段:TIME 当前未取到的字段: 0为前者,1位后者:1 拼接好的SQL(关联条件字符串):B1002.PROJECTID = Z.ID...50; BEGIN --主查询别名赋值 ALIAS := 'Z'; --副查询别名头赋值 F_ALI := 'B'; --表名赋值 N_TABLE_NAME := 'BBB'; --查询库中是否有这张表...SQL FOR TEMP IN DATA LOOP --给待拼接的字段赋值 STR := TEMP.ASSOCIATION; --在末端追加逗号,否则最后一个字符无法识别 STR :=

2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Oracle中的SQL优化

    同一功能同一性能不同写法SQL的影响(使用ORACLE的共享SQL程序)     如一个SQL在A程序员写的为:Select * from zl_yhjbqk     B程序员写的为:Select *...在ORACLE分析整理之后产生的结果及执行的时间是一样的,但是从ORACLE共享内存SGA的原理,可以得出ORACLE对每个SQL 都会对其进行一次分析,并且占用共享内存,如果将SQL的字符串及格式写得完全相同则...    b.查询表顺序的影响     在FROM后面的表中的列表顺序会对SQL执行性能影响,在没有索引及ORACLE没有对表进行统计分析的情况下ORACLE会按表出现的顺序进行链接,由此因为表的顺序不对会产生十分耗服务器资源的数据交叉...的HINT(提示)处理:提示处理是在ORACLE产生的SQL分析执行路径不满意的情况下要用到的。...它可以对SQL进行以下方面的提示     1.目标方面的提示:     COST(按成本优化)     RULE(按规则优化)     CHOOSE(缺省)(ORACLE自动选择成本或规则进行优化)

    2.7K20

    选择适合您网站的 SQL 托管:MS SQL Server、Oracle、MySQL

    它是一个强大、稳健且功能齐全的SQL数据库系统。 Oracle Oracle也是一种用于高流量数据库驱动网站的流行数据库软件。它提供了强大的功能和性能,适用于大型企业级应用。...它是一个强大、稳健且功能齐全的SQL数据库系统,通常被用作对昂贵的Microsoft SQL Server和Oracle解决方案的廉价替代。...SQL托管选择 自托管 在某些情况下,您可能选择自行托管数据库,这意味着您需要自己配置、管理和维护数据库服务器。这对于对数据库有高度控制需求的人来说是一个选项。...SQL数据类型对于MySQL、SQL Server和MS Access 数据库表中的每一列都需要有一个名称和一个数据类型。在创建表时,SQL开发人员必须决定每个列内存储什么类型的数据。....): 字符串对象,可以有0个或更多个值,从可能值的列表中选择。 数字数据类型 BIT(size): 位值类型,每个值的位数在size中指定。

    1.5K10

    【DB笔试面试670】在Oracle中,什么是SQL实时监控?

    目部分 在Oracle中,什么是SQL实时监控?...答案部分 在Oracle 11g中,V$SESSION视图增加了一些新的字段,这其中包括SQL_EXEC_START和SQL_EXEC_ID,这两个字段实际上代表了Oracle 11g的一个新特性:实时的...在Oracle 11g中,当SQL并行执行时,会立即被实时监控到,或者当SQL单进程运行时,若消耗超过5秒的CPU或I/O时间,则它也会被监控到。...监控数据被记录在V$SQL_MONITOR视图中,当然也可以通过Oracle 11g新增的包DBMS_MONITOR来主动对SQL执行监控部署。...V$SQL_MONITOR收集的信息每秒刷新一次,接近实时。当SQL执行完毕,信息并不会立即从V$SQL_MONITOR中删除,至少会保留1分钟。

    1.1K20

    【DB笔试面试609】在Oracle中,SPM(SQL Plan Management,SQL计划管理)是什么?

    ♣ 题目部分 在Oracle中,SPM(SQL Plan Management,SQL计划管理)是什么? ♣ 答案部分 Outline的缺点是太过死板,当数据量大幅度变化时无法做出相应的改变。...在Oracle 11g中,Oracle提供DBMS_SPM包来管理SQL Plan,SPM是一种预防机制,它记录并评估SQL的执行计划,将已知的高效的SQL执行计划建立为SQL计划基线。...在SQL计划基线捕获阶段,Oracle记录SQL的执行计划并检测该执行计划是否已经改变。...=> '7qqnad1j615m7'); END; / 在SQL计划基线演化阶段,Oracle会按常规方式评估新计划的性能,并将性能较好的计划集成到SQL计划基线中。...在SQL Plan选择阶段,SQL每一次编绎,优化器使用基于成本的方式,建立一下best-cost的执行计划,然后去匹配SQL Plan Baselines中的SQL Plan,如果找到了匹配的SQL

    1.3K10

    Oracle中的基本SQL知识

    什么是SQL语言 a) SQL, Structured Query Language, 结构化查询语言 b) SQL 是最重要的关系数据库操作语言,是所有关系数据库 管理系统的标准语言....c) SQL 语言是非过程化的语言, 只需要告诉做什么, 不需要 关注怎么做, 简单....开始设置使用Oracle时的相关准备 设置字体 ? 关闭自动备份,避免生成同名文件 ? select基本语句 一般使用的是Oracle自带的scott用户,密码默认为tiger,不过要手动创建一下。...d) 在 Oracle 中, 双引号表示原样输出. select ename, job, sal*12 "ni a n xin" from emp; 5、 distinct 用于去除重复行信息 a)...查询所有员工的姓名和年薪, 按照年薪排序 select ename, sal*12 nianxin from emp order by nianxin desc; where子句 1、等值条件 c) 查询在

    1.6K20

    Oracle中执行动态SQL

    Oracle中动态SQL可以通过本地动态SQL来执行,也可以通过DBMS_SQL包来执行。...;        ID      NAME        1      dinya   在上例中,本地动态SQL执行DML语句时使用了using子句,按顺序将输入的值绑定到变量,如果需要输出参数,可以在执行动态...查看表中已有记录: SQL> select * from dinya_test2;       ID NAME        1 Oracle        2 CSDN        3 ERPSQL...总结说明:   在Oracle开发过程中,我们可以使用动态SQL来执行DDL语句、DML语句、事务控制语句及系统控制语句。...另外,DDL是在调用DBMS_SQL.PARSE时执行的,所以DBMS_SQL.EXECUTE也可以不用,即在上例中的v_row:=dbms_sql.execute(v_cursor)部分可以不要。

    82510

    【DB笔试面试605】在Oracle中,SQL概要(SQL Profile)的作用是什么?

    ♣ 题目部分 在Oracle中,SQL概要(SQL Profile)的作用是什么?...♣ 答案部分 SQL Profile就是为某条SQL语句提供除了系统统计信息、对象(表和索引等)统计信息之外的其它信息,比如运行环境、额外的更准确的统计信息,以帮助优化器为SQL语句选择更适合的执行计划...使用SQL Profile的两个目的:①锁定或者说是稳定执行计划。②在不能修改应用中的SQL的情况下使SQL语句按指定的执行计划运行。...SQL Profile最大的优点是在不修改SQL语句和会话执行环境的情况下去优化SQL的执行效率,适合无法在应用程序中修改SQL时。...上的文章note 215187.1中的sqlt.zip的目录utl中提供了脚本coe_xfr_sql_profile.sql可以生成这些信息。

    1.4K10

    【DB笔试面试570】在Oracle中,SQL优化在写法上有哪些常用的方法?

    ♣ 题目部分 在Oracle中,SQL优化在写法上有哪些常用的方法? ♣ 答案部分 一般在书写SQL时需要注意哪些问题,如何书写可以提高查询的效率呢?...实际上,Oracle在解析的过程中,会将“*”依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。...DEPTNO有NULL存在,那么整个查询都不会有结果,在Oracle 11g之前,如果主表和子表的DEPTNO未同时有NOT NULL约束,或都未加IS NOT NULL限制,那么Oracle会选择filter...(16)在Oracle数据库里,IN和OR是等价的,优化器在处理带IN的目标SQL时会将其转换为带OR的等价SQL。...(29)选择合适的索引。Oracle在进行一次查询时,一般对一个表只会使用一个索引。

    4.2K30

    【DB笔试面试564】在Oracle中,什么是索引的选择性?

    ♣ 题目部分 在Oracle中,什么是索引的选择性? ♣ 答案部分 索引的选择性(Index Selectivity,索引的选择度或索引的选择率)是指索引列中不同值的记录数与表中总记录数的比值。...可以使用如下的SQL来计算索引的选择性: SELECT COUNT(DISTINCT NAME)/COUNT(*) FROM TB_A; 这种方法的优点是在创建索引前就能评估索引的选择性。...当索引被收集了最新的统计信息时,可以使用如下的SQL语句查询索引的选择性: SELECT INDEX_NAME,DISTINCT_KEYS/NUM_ROWS SELECTIVITY FROM DBA_INDEXES...; 毋庸置疑,主键的选择性为1。...选择性越接近1,那么该索引就越好。 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

    1.2K30

    【SQL】小心在循环中声明变量——浅析SQL变量作用域

    理解这一点很重要,因为这与C#等编译语言非常不同,C#中每一圈声明的变量都相当于重新建一个,与上一圈的毫无关系,但在sql中不能这么思考。...其实这个问题本质上是一个变量作用域问题,只不过SQL中的变量作用域,与C#等语言按语句块划分不一样,SQL的变量作用域是【批】,这一点在MSDN中有说。...原因就在于声明语句比较特殊,它并不依赖位置,系统“见到”就算数,所以不管变量在多深的语句块中声明,它在本批接下来的语句中都是有效的。...印象中某种SQL的写法是声明在一个区,逻辑在一个区,既然你t-sql的声明具有“提升”这种特点,我认为做成那种比较好,而不是混在逻辑语句中搞特殊。...回到开头的问题,现在我们清楚,虽然变量在循环中声明,但它并不会被多次执行,甚至不是在第1圈的时候执行,而是在某个时机由系统将所有声明统一执行,大概类似C#的静态字段,不管定义在哪里,CLR会确保在使用该类前完成初始化

    2.4K20

    在nodejs中事件循环分析

    在上一篇文章在chromev8中的JavaScript事件循环分析中分析到,在chrome中的js引擎是通过执行栈和事件队列的形式来完成js的异步操作。...虽然每个阶段都有自己的特殊性,但通常,当事件循环进入给定阶段时,它将执行特定于该阶段的任何操作,然后在该阶段的队列中执行回调,直到队列用尽或执行最大回调数。...如果此时有多个计时器已准备就绪,则事件循环将围绕到timers阶段以执行这些回调。 值得注意的是,poll阶段在执行poll queue中的回调时实际上不会无限的执行下去。...当事件循环准备进入下一个阶段之前,会先检查nextTick queue中是否有任务,如果有,那么会先清空这个队列。与执行poll queue中的任务不同的是,这个操作在队列清空前是不会停止的。...运行环境中的各种复杂的情况会导致在同步队列里两个方法的顺序随机决定。但是,在一种情况下可以准确判断两个方法回调的执行顺序,那就是在一个I/O事件的回调中。

    5.8K00

    【DB笔试面试608】在Oracle中,如何使用STA来生成SQL Profile?

    ♣ 题目部分 在Oracle中,如何使用STA来生成SQL Profile? ♣ 答案部分 利用STA对语句进行优化后,STA会对语句进行分析,采用最优的优化策略,并给出优化后的查询计划。...但是,有些情况下,你可能无法重写语句(比如在生产环境中,SQL语句又在一个包中)。...这个时候就可以利用Sql Profile,将优化策略存储在Profile中,Oracle在构建这条语句的查询计划时,就不会使用已有相关统计数据,而使用Profile的策略,生成新的查询计划。...在10g中,每个会话都有一个新参数SQLTUNE_CATEGORY,他的默认值是DEFAULT。...并且在查询计划中还有一些附加信息,表明这个语句是采用了“SYS_SQLPROF_0154e728ad3f0000”这个Profile,而不是根据对象上面的统计数据来生成的查询计划。

    3.3K20

    【DB笔试面试575】在Oracle中,SQL语句的执行过程有哪些?

    ♣ 题目部分 在Oracle中,SQL语句的执行过程有哪些? ♣ 答案部分 Oracle数据库里SQL语句的执行过程可以如下图所示: ?...在查询转换过程中,Oracle会根据一些规则来决定是否对目标SQL执行查询转换,这些规则在Oracle不同的版本里不尽相同。...在Oracle 9i中,查询转换是独立于优化器的,它与优化器的类型无关,但是从Oracle 10g开始,Oracle会对某些类型的查询转换(比如子查询展开、复杂视图合并等)分别计算经过查询转换后的等价改写...只有当等价改写后SQL的成本值小于未经过查询转换的原始SQL的成本值时,Oracle才会对目标SQL执行查询转换。在执行完查询转换后,原目标SQL可能就被Oracle改写了,当然也有可能没有改写。...在这个步骤里,Oracle会根据不同的优化器类型(CBO或RBO)采用不同的判断原则,从执行完查询转换后得到的目标SQL的诸多可能的执行路径中选择一条效率最高的路径来作为其执行计划,即查询优化的输入就是执行完查询转换后得到的等价改写

    1.9K10

    oracle数据库sql语句优化(循环语句有几种语句)

    下面列举一些工作中常常会碰到的Oracle的SQL语句优化方法: 1、SQL语句尽量用大写的; 因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。...3、选择最有效率的表名顺序(只在基于规则的优化器(RBO)中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表 (基础表也称为驱动表,driving...table)将被最先处理,在FROM子句中包含多个表的情况下, 必须选择记录条数最少的表作为基础表。...8、在SQL*Plus,SQL*Forms和Pro*C中重新设置ARRAYSIZE参数,可以增加每次数据库访问 的检索数据量,建议值为200。...,只有在它的第一个列(leading column)被where子句引用时, 优化器才会选择使用该索引。

    3.8K10

    【DB笔试面试569】在Oracle中,SQL如何优化?SQL优化的关注点有哪些?

    ♣ 题目部分 在Oracle中,SQL如何优化?SQL优化的关注点有哪些? ♣ 答案部分 随着数据库中数据量的增长,系统的响应速度就成为目前系统需要解决的最主要的问题之一。...对于一个系统不是简单地能实现其功能就可以了,而是要写出高质量的SQL语句,提高系统的可用性。 在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。...(13)在创建表的时候,应尽量建立主键,可以根据实际需要调整数据表的PCTFREE参数。 SQL优化的一般性原则如下所示: l 目标: 减少服务器的资源消耗(主要是磁盘I/O)。...l 设计方面: ① 尽量依赖Oracle的优化器,并为其提供条件。 ② 建立合适的索引,注意索引的双重效应,还有列的选择性。...l 编码方面: 参考【1.2.5.2 SQL优化在写法上有哪些常用的方法?】。 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

    1.4K20
    领券