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

Oracle 数据库编程语言 PLSQL 的历史

然而随着对 PL/SQL 研究的加深和访谈了越来越多的人,发现一篇简短的文章无法囊括所有的 PL/SQL 历史,因此本文仅仅只涵盖了 PL/SQL 诞生历史的一部分内容,尽管关于 PL/SQL 的许多原始的基础代码仍然存在...Peter 回忆道:“我们从事这个语言已有一段时间了,当你自己测试这种语言,你知道要避免某些编译器无法处理的事情(备注:从而无法测试出编译器潜在的问题),因此偶尔用新的眼光去重新理解这种语言是很好的。...比如在 PL/SQL 第一个版本中只支持简单的过程,而在 PL/SQL 第二个版本中需要在代码生成器和解释器增加新的,然后发现大部分都已经在 解析器和 DIANA 存在了。...在那段时间里,Terry 还对 SQLLIB 进行了重大改进,SQLLIB 是所有 Oracle 预编译器为其生成代码的基础共享库,并创建了 PLAX,直到今天 PL/SQL 依赖于解析器生成器 SLAX...在软件中解释每个字节码指令的开销很大,一个简单的计算可能都需要数十条指令,而执行所花费的大部分时间都花在了那笔开销上。 在 Ada 中,情况更糟,因为操作算子可以引用在多个作用域和多个中的变量。

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

Oracle PLSQL基础语法学习15:静态表达式

这个表达式在编译可以确定其值的表达式,即它不包括字符比较、变量或函数调用,在运行时是不可改变的,常常在PL/SQL中用于初始化变量、常量、参数等。.../SQL代码创建了一个名为my_debug的,其中包含两个静态常量debug和trace,类型为BOOLEAN,并在其值上分别定义为TRUE,用于控制多个PL/SQL单元中的调试和跟踪。...这种条件编译语句通常用于开发和调试过程中,在编译根据一些条件选择性地编译特定的代码块,以提高代码的可读性和效率。...因此,只要该定义者具有访问表 table1 的权限,无论调用该存储过程的用户具有何种权限,该查询都会成功执行。 但是,如果定义者在创建存储过程已经不存在或者权限被撤销,则该存储过程无法成功执行。...AUTHID参数可以用于定义执行函数体,使用哪个用户的权限。

15250

欲善其事必利其器-SQL性能分析工具sqlhc简单介绍

sqlhc是SQL health check的简称,能够收集sql相关的表、索引、统计信息、优化器参数、SQL执行情况、等待事件等信息,可以帮你检查SQL存在问题并优化SQL。...T|D|N] (required) Enter value for 1: T 第一个参数,根据购买License情况选择T、D或N(大多数人会选择T) PL/SQL procedure successfully...压缩内的文件一般如下图所示: 其中4个html文件和log.zip是通常存在的。...如果*sql_monitor.zip 也包含在sqlhc压缩内,说明你的SQL执行时间超过了5s,或者是并行的SQL,而且收集sqlhc保留在sql monitor的内存。...sql monitor对分析sql执行计划有很大帮助,这个工具也可以作为一个专门的主题。如果遇到问题收集sqlhc信息及时,就非常有可能收集到sql monitor文件。

1K40

Oracle存储过程详解(一)

VALUE_ERROR 赋值,变量长度不足以容纳实际数据 LOGIN_DENIED PL/SQL 应用程序连接到 oracle 数据库,提供了不正确的用户名或密码 NOT_LOGGED_ON PL.../SQL 应用程序在没有连接 oralce 数据库的情况下访问数据 PROGRAM_ERROR PL/SQL 内部问题,可能需要重装数据字典& pl..../SQL系统 ROWTYPE_MISMATCH 宿主游标变量与 PL/SQL 游标变量的返回类型不兼容 SELF_IS_NULL 使用对象类型,在 null 对象上调用对象方法 STORAGE_ERROR...运行 PL/SQL ,超出内存空间 SYS_INVALID_ID 无效的 ROWID 字符串 TIMEOUT_ON_RESOURCE Oracle 在等待资源超时 基本语法 1....用pl/sql developer debug 连接数据库后建立一个Test WINDOW,在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试 关于oracle存储过程的若干问题备忘 1

1.8K30

PLSQL --> 动态SQL

静态SQL为在执行编译,一次编译,多次运行。动态SQL同样在执行编译,但每次执行需要重新编译。 静态SQL可以使用相同的执行计划,对于确定的任务而言,静态SQL更具有高效性。...但缺乏灵活性 动态SQL使用了不同的执行计划,效率不如静态SQL,但能够解决复杂的问题。 动态SQL容易产生SQL注入,为数据库安全带来隐患。...d.使用系统提供的PL/SQLDBMS_SQL来实现动态SQL,关于该方式请参考后续博文。...d.当执行SQL,其尾部不需要使用分号,当执行PL/SQL 代码,其尾部需要使用分号。 f.动态SQL中的占位符以冒号开头,紧跟任意字母或数字表示。.../SQL --> 重载、初始化 PL/SQL --> DBMS_DDL的使用 PL/SQL --> DML 触发器 PL/SQL --> INSTEAD OF 触发器

2.2K10

PLSQL编码规则

当我向Swyg方案中增加另一个表,并生成一组相关,我只要运行我的脚本,更新后的安装脚本便会跳出来。     2.  戒除编写SQL的嗜好     编写的SQL越少越好,这似乎与我们的直觉不太一致。...这直接在SQL语句中包含了执行商务规则的逻辑。这些规则总在变化,所以应用程序的维护成本会急剧增加。     当然,你要编写的每一个PL/SQL应用程序几乎都是基于基础表和视图的。你需要执行SQL语句。...问题不在于是否执行,而是何时执行、如何执行。    ...将显示PL/SQL语句灌入SQL代码很容易,同样,谈论封装这些语句是如何重要也不费劲。但另一方面,编写执行封装任务的代码却具有挑战性;甚至是不现实的。生成这些或许更有意义。    ...你的朋友瞥了一眼屏幕,马上就指出了问题所在。     你的朋友不负责该系统中你所做的部分,所以你必须说明你的程序在干什么。当你逐步讲解逻辑,引起错误的问题所在会突然暴露在你面前。

1K20

Oracle PLSQL编程之基础

1、简介:pl/sql块由三个部分组成:定义部分、执行部分、例外处理部分,如下所示:         declare:         /*定义部分---定义常量、变量、游标、例外、复杂数据类型        ...begin         /*执行部分---要执行pl/sql语句---要执行pl/sql语句和sql语句*/         exception         /*例外处理部分---处理运行的错误...上图是一个简单的pl/sql块,输出hello world,红框内是打开系统的输出选项,绿框(dbms_output)是Oracle所提供的(类似Java的开发包),该包包含一些过程,put_line...就是dbms_output的一个方法 2.2、包含定义部分和执行部分的pl/sql块 ?...2.3、pl/sql的例外处理 在上面的实例代码中存在一个问题,当我们输入的编号(empno),在emp表中不存在,那么程序就会报错,当我输入42345345,程序就会报以下错误, ?

84480

Oracle存储过程

可以在该语法之前,先利用select count(*) from 查看数据库中是否存在该记录,如果存在,再利用select...into... 4.在存储过程中,别名不能和字段名称相同,否则虽然编译可以通过...赋值,变量长度不足以容纳实际数据 LOGIN_DENIED PL/SQL 应用程序连接到 oracle 数据库,提供了不 正确的用户名或密码 NOT_LOGGED_ON...PL/SQL 应用程序在没有连接 oralce 数据库的情况下 访问数据 PROGRAM_ERROR PL/SQL 内部问题,可能需要重装数据字典.../SQL 系统 ROWTYPE_MISMATCH 宿主游标变量与 PL/SQL 游标变量的返回类型不兼容 SELF_IS_NULL...使用对象类型,在 null 对象上调用对象方法 STORAGE_ERROR 运行 PL/SQL ,超出内存空间 SYS_INVALID_ID

2.6K50

寻找SQL执行线索的武器库

碰到一些SQL问题,有时常规的方式,例如执行计划,不足以给出问题的线索。因此,可能还需要跟踪这条SQL,通过Oracle提供的trace,了解它内部执行的机制,从中寻找线索。...需求:用户TEST通过dbeaver登录到数据库,需要跟踪它所执行SQL。 (1)确定TEST用户通过dbeaver执行SQL的会话信息。..., SELECT * FROM t;(t表不存在) SELECT * FROM test; (4)如上SQL执行的数据都存储到(1)的p.tracefile。...提示了"PARSE ERROR",第二条SQL展示了具体执行的信息(包括执行计划、PARSE/EXEC/FETCH等语句执行阶段的消耗),可以有助于进一步对SQL进行探索, vi /opt/oracle...除此之外,10046和10053,也是我们探究问题需要具备的武器, 《如何生成其他会话的10046?》 《PL/SQLSQL语句10053创建方法》 《有关10053事件,你知道这两个知识点么?》

68420

对于Oracle兼容,我们手拿把掐

PL/SQL语法兼容 PL/SQL语法兼容Oracle 存储过程、函数的创建,如:以IS作为PLSQL块定义开始、可以用/作为定义结束 存储过程、函数支持COMMIT、ROLLBACK事务控制 兼容游标属性支持...ROWID & ROWNUM ROWID支持: 建表支持指定 WITH ROWID参数 更新,新元组的ROWID值不变 ROWID列存在索引,以ROWID查询加快查询速度 ROWNUM支持:返回记录编号...PL/SQL - PACKAGE PACKAGE支持: 支持公共、私有变量定义 支持定义自定义类型 支持初始化模块 初始化块等 10....TDSQL Pro*C功能兼容 支持了变量声明、建立连接、基础SQL语句、预编译语句、游标、简单动态 SQL、ANSI 动态 SQL、错误处理语句等8类场景,约24个语法用法的兼容 四、Oracle...兼容性评估 对象兼容评估报告: 数据库静态对象,例如:表、索引、视图、函数、存储过程、物化视图、触发器、、数据类型等信息 应用兼容评估报告: 应用端发送给源端执行SQL评估 评估效果和运行时间、抓取得

1.9K20

险恶江湖:Oracle的TNS_ADMIN获取与设置混乱误删除案例

',:envout); PL/SQL procedure successfully completed....SQL> set serveroutput on SQL> exec dbms_system.get_env('ORACLE_HOME',:envout); PL/SQL procedure successfully...OEM在启动后,左边的数据库目录树是从Oracle目录的tnsnames.ora中解析出来的,完全忽略了TNS_ADMIN环境变量,即使是执行“将数据库添加到树”操作,也是完全忽略了TNS_ADMIN变量...软件不可避免地存在Bug,所以在出现问题后,一味抱怨软件的Bug无济于事。我们只有吸取教训,从管理上、技术手段上去防止此类问题的发生,才是有意义的。 数据库的安全防范措施: ---- 1....比如删除用户(Drop User),应先Lock User;删除表空间,先将表空间OFFLINE;删除表等其他对象,先进行改名(rename)操作;完成这些操作后,观察一段时间确认没有问题后,再真正执行删除操作

4.4K60

关于IvorySQL和OpenGaussSPEC与集合类型的一些思考

: 变量:变量需要能够作用于所有PL代码中,PG中没有全局变量的这种概念,又因为PL的插件式设计和SQL层解耦,PL变量就算给SQL使用一般也只能用回调(PL的datums拼SQL的params)。...实现时可根据pkgname,先编译,并生成的符号表,SQL层可回调使用变量,PL层可直接使用变量。...在PL层使用时,例如 a := pkg.g_var;,在PL parse对二段解析增加搜索命名空间的逻辑即可,不要发生deep copy,将的datums拷贝到自己的datums中,这样的话会变得非常复杂...,执行完还要拷贝回空间中。...关联数组:功能等价与哈希表, 高斯实现了类似于指针数组的功能,避免了PG多维数组的维度锁死的问题(第一次使用定义维度,后面无法修改),实现较为合理:《分析openGauss内集合类型的实现方法》 IvorySQL

15720

关于shared pool的深入探讨(五)

只读模式获得共享pin,修改模式获得排他pin. 通常我们访问、执行过程、Package获得的都是共享pin,如果排他pin被持有,那么数据库此时就要产生等待....P2 - Pin address                 P3 - Encoded Mode & Namespace "LIBRARY CACHE PIN"通常是发生在编译或重新编译PL/SQL...当object变得无效,Oracle 会在第一次访问此object试图去重新编译它,如果此时其他session已经把此object pin 到library cache中,就会出现问题,特别当有大量的活动...session并且存在较复杂的dependence.在某种情况下,重新 编译object可能会花几个小时时间,从而阻塞其它试图去访问此object的进程....,在object上让保持共享pin --由于grant会导致重新编译该对象,所以在handle上的排他锁已经被持有 --进一步的需要获得object上的Exclusive pin,由于shared pin

45520

浅谈plsql (r3笔记第14天)

我自己在以前的总结中提出了以下几个问题,自己来按照这个思路来解答一下,可能大家印象中的pl/sqlsql还是有很大的差别的。...Oracle 6.0 1988年,最初的pl/sql版本 Oracle 7.0 存储过程,函数,,自定义类型,集合的支持 Oracle 8.0 版本号同步, pl/sql 8.0, LOB,面向对象,...Oracle 9.2 XML Oracle 10.1 2004年,改进的/自动的数据库管理, 优化的编译器和编译警告 Oracle 11.1 2007年,函数结果缓存,符合触发器,continue…...–--主要编写服务器端程序 Sqlpl/sql的联系 pl/sql完全支持sql sql中可以调用pl/sql 关于pl/sqlsql还是有很大的技术细节,可以认为pl/sql是实现更为复杂的商业逻辑支撑...,对sql的更加全面的扩展,虽然两者的问题出发点不同。

76790
领券