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

Oracle总结【PLSQL学习】

程序中:;号表示每条语句的结束,/表示整个PLSQL程序结束 PLSQL与SQL执行有什么不同: (1)SQL是单条执行的 (2)PLSQL是整体执行的,不能单条执行,整个PLSQL结束用/,其中每条语句结束用...;号 ---- PLSQL变量 既然PLSQL是注重过程的,那么写过程的程序就肯定有基本的语法,首先我们来介绍PLSQL的变量 PLSQL的变量有4种 number varchar2 与列名类型相同 与整个表的列类型相同...设置显示PLSQL程序的执行结果,默认情况下,不显示PLSQL程序的执行结果,语法:set serveroutput on/off; set serveroutput on; 使用基本类型变量,...当定义变量时,该变量的类型与表中某字段的类型相同时,可以使用%type 当定义变量时,该变量与整个表结构完全相同时,可以使用%rowtype,此时通过变量名.字段名,可以取值变量中对应的值 项目中,常用...到目前为止,我们的PLSQL是有几个缺点的: PLSQL不能将其封装起来,每次调用的时候都要将整片代码复制来调用 有的时候,我们想要将PLSQL的代码保存起来,只能自己手动保存在硬盘中,非常麻烦 我们学数据库就是为了让程序能够调用的

2.4K70

PLSQL --> 动态SQL的常见错误

本文介绍了动态SQL的常见问题。 一、演示动态SQL的使用 下面的示例中,首先使用动态SQL基于scott.emp创建表tb2,然后里直接使用动态SQL从新表中获取记录数并输出。...1.使用动态DDL时,不能使用绑定变量 下面的示例中,在创建表示,使用了绑定变量:dno,在执行的时候收到了错误信息。...动态SQL语句查询需要传递表名,因此收到了错误提示。...使用USING传递参数到动态SQL或使用INTO子句传递结果集到变量应注意按正确的顺序排列处理 下面的示例中由于v_ename与v_sal为不同的数据类型,在使用INTO时不小心将顺序颠倒,导致错误产生...SELECT 查询不能使用RETURNING INTO返回 下面的示例中,使用了动态的单行SELECT查询,并且使用了RETURNING子句来返回值。

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

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

    l 虚拟网卡设置 本机和虚拟机之间能相互访问,它们的IP段必须相同,但是本机将会连接不同的网络环境(比如教室、宿舍、家庭),那么本机的IP段会产生变化就连不上虚拟机了,为了避免这种情况我们让本机和虚拟机之间用虚拟网卡的方式互相通信...l 用户: 用户是在实例下建立的。不同实例中可以建相同名字的用户。 注: 表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。...范例:查询出每个员工的上级领导 分析:emp表中的mgr字段是当前雇员的上级领导的编号,所以该字段对emp表产生了自身关联,可以使用mgr字段和empno来关联 ?...,我们发现在order_detail表中插入的order_id在order表中并不存在,这样在数据库中就产生了脏数据。...尤其注意的是表中不能有大字段(blob,clob,long),如果有,会提示不能导出(提示如下: table contains one or more LONG columns cannot export

    1.9K20

    PLSQL Developer几个可能的隐患

    ,你要保证程序中,或者在工具中执行的SQL顺序上,DML和DDL不要有交叉相互影响。...例如开发人员在PLSQL Developer会话中增删改数据,但是忘了或者其他原因没做commit/rollback,再操作其他会话,会看到这个变更未生效,产生混淆。...之所以DML语句需要显示提交,从原理层讲,DML会记录redo和undo信息,undo中存储的是修改数据的前镜像,当执行rollback时,可以利用undo数据进行恢复,当执行commit时,Oracle...黑客在PLSQL Developer的AfterConnect.sql文件中加入了勒索代码,然而此文件在官方的软件中为空文件,该勒索病毒就是利用了这个文件注入病毒代 码,在用户连接数据库后立即执行,并在告警日志出现自动任务执行错误...大致的逻辑是, 1.判断数据库建库时间是否大于1200天。 2.隐藏了1200天,就会将sys.tab$的数据导入名为"ORACHK||SYS_GUID前10位"的表中。

    2.1K10

    FORALL 之 SAVE EXCEPTIONS 子句应用一例

    对于大批量的DML操作中出现的错误,除了使用DML error logging特性来记录在DML期间出现的错误之外,使用批量SQL语句FORALL的SAVE EXCEPTIONS是不错的选择之一...2、需要将数据库A的一些表的数据同步到数据库B对应的目的表       3、如果同步的过程中出现某条特定的记录错误,则写该记录产生的错误信息(含表名,主键)到日志表,并将其原表同步状态更新为N,否则更新为...-->为表emp_dest 添加约束用于在insert过程中触发错误产生 scott@CNMMBO> alter table emp_dest add constraint ck_sal check(sal...emp_tab嵌套表基于源表,因此出现数据缓冲太小的错误 PL/SQL procedure successfully completed. 2、内层exception中bulk_error处产生的异常...上面由于源表的is_sync列有约束限制,只允许出现C或E值,而bulk_error中是更新为N,所以给出错误提示 我们来看看err_log_tbl,两条源表到目标表在非insert时产生的错误信息已经被记录到日志表

    79710

    .NET程序连接Oracle一次执行多行SQL的注意事项

    以前写的基于MSSQL数据库的.NET程序,不用担心SQL语句中的;或者换行符。...Oracle.ManagedDataAccess.Client.OracleException:ORA-00911: invalid character 单行SQL如果有换行时,加了;就报上面的错,多行执行的时候...,会报下面这种错误 Oracle.ManagedDataAccess.Client.OracleException:ORA-06550: line 1, column 1: PLS-00103: Encountered...虽然从网上能搜索到ExecuteNonQuery执行Oracle多条SQL的时候需要用到以下结构 BEGIN SQL1; SQL2; SQL3; END; 但是并没有人提到一定要确保整个SQL是一行,必须没有换行...的一条血的教训 BPM的移动互联的一点想法 6年做BPM的实施、开发、推广应用的一个小结 从崔牛的2017云图看BPM市场 原创FlowPortal用户手写签名插件:Signature

    1K30

    3 万字,关系型数据库性能体系,设计和效率提升

    如果违反了 2NF,那么应该把这个属性从关系表中拆分,也许会单独形成一个表,绝大部分情况下是将该属性归并到某个相关的实体表中。...主键是每行数据的唯一标识,保证主键不可随意更新修改,在不知道是否需要主键的时候,请加上主键,它会为你的程序以及将来查找数据中的错误等等,提供一定的帮助。...当 ORACLE 处理多个表时,会运用排序及合并的方式连接它们:首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行排序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并...PLSQL 程序占用 CPU 的情况 1、系统解析SQL语句执行,会消耗CPU的使用; 2、运算(计算)会消耗CPU的使用。...PLSQL优化、索引不使用的问题产生的影响: 对于某段不优化的程序或语句频繁或者全表扫描一个表时,它访问磁盘的时间和占用的吞吐量是很高的,这就导致系统 IO 长时间处于忙的状态,导致整个系统性能下降。

    1.9K22

    oracle存储过程中使用create table as

    Oracle 背景 今天有个同学跟我说存储过程无法建表,我本地试了一下嚯嚯果然不行。...报错PLS-00103 是因为存储过程执行DDL语句是需要用EXECUTE IMMEDIATE调用sql,编译成功。 测试报错ORA-01031:权限不足。...方法一 使解析环境为调用该存储过程的用户所在的Schema,执行该存储过程时拥有调用者的所有权限,即调用者的Role是有效的。...方法二 CREATE TABLE想使用CREATE ANY TABLE权限,而CREATE ANY TABLE权限来自DBA角色,默认情况下,虽然在会话环境中可见,可以显示地将CREATE ANY TABLE...权限授予用户就可以了 GRANT CREATE ANY TABLE TO 登录用户; 但是在包中的存储过程是不能用方法一 会报错误:PLS-00157: AUTHID 只允许在方案级程序中使用

    3.4K20

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

    客户机中PLSQL DEV访问虚拟机中的ORACLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签: ORACLE 忙了一下午,只有两个字形容:麻烦!...首先使用DCA(在oRACLE的开始菜单文件夹里面,缩写哦),打开后会显示几个选项,选择【创建数据库】,然后下一步,之后的几个步骤一直到创建数据库完毕,并没有出任何错误,所以就不多说了,唯一出现的错误可能就是提示类似...Tip:如果你在你不知道什么情况的情况下,你使用Net Manager做了一些操作,而且你也忘了原来是什么了,不要紧,关闭Net Manager窗口的时候会提示你是否保存,选择否即可恢复!...然后,在connection中安装图示设置,instantclient的位置。 ? 很重要的一步,到虚拟机注册表中查看NLS_LANG的值,若无此路径则直接查找NLS_LANG,复制此键值。 ?...至于最后一个问题,请检查环境变量中的NLS_LANG的值是否和远程主机注册表中的值相同,切记不要手敲!如果还是这个问题,可能是你刚配置完环境变量,cmd的命令框还是之前开的,请重开一个cmd再次尝试。

    80600

    数据分布决定SQL写法

    原SQL还有一个隐患,就是如果t_trade的某个cstno对应的最大trade_date有重复,那么这个SQL会报ORA-30926 错误无法执行。...在这样一个两表数据相差较大的特殊情况下,plsql写法确实是比分析函数的写法要高效。这个改写非常巧妙。...我们再来分析一下这两种改写的优缺点: 1、plsql的改写方式,适合在t_customer表比较小,而且t_customer 和 t_trade 两表的记录数比例比较大的情况下,执行效率才会比分析函数的改写高一些...在本例中,如果t_customer表的记录数是10万,那么分析函数的写法反而要比plsql的写法快上几十到上百倍。 2、如果在程序代码中,一段sql要改成plsql,改动还是有点麻烦。...总结: SQL优化,除了要避免低效的SQL写法,主要还是要看表的数据量与数据分布情况,plsql的改写方法,在少数比较特殊的情况下会体现出较高的效率,在某些数据分布的情况下,效率可能还不如原SQL

    42210

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

    客户机中PLSQL DEV访问虚拟机中的ORACLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签: ORACLE 忙了一下午,只有两个字形容:麻烦!...首先使用DCA(在oRACLE的开始菜单文件夹里面,缩写哦),打开后会显示几个选项,选择【创建数据库】,然后下一步,之后的几个步骤一直到创建数据库完毕,并没有出任何错误,所以就不多说了,唯一出现的错误可能就是提示类似...Tip:如果你在你不知道什么情况的情况下,你使用Net Manager做了一些操作,而且你也忘了原来是什么了,不要紧,关闭Net Manager窗口的时候会提示你是否保存,选择否即可恢复!...7.然后,在connection中安装图示设置,instantclient的位置。 ? 8.很重要的一步,到虚拟机注册表中查看NLS_LANG的值,若无此路径则直接查找NLS_LANG,复制此键值。...至于最后一个问题,请检查环境变量中的NLS_LANG的值是否和远程主机注册表中的值相同,切记不要手敲!如果还是这个问题,可能是你刚配置完环境变量,cmd的命令框还是之前开的,请重开一个cmd再次尝试。

    1.6K00

    PLSQL的使用「建议收藏」

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

    9.9K11

    PLSQL12.0.7的下载、安装及使用教程

    1、PLSQL12.0.7下载 plsql官方下载地址:https://www.allroundautomations.com/bodyplsqldevreg.html 如图,根据自己的电脑选择合适的版本进行下载...点击install后,会立刻打开安装进度页面,在上面可以看到安装进度: 安装完毕之后,在弹出来的页面框点击finish即可。...此时,会在桌面上出现plsql的快捷图标,如下图: 至此,plsql安装已经完成了。...注意:如果用户名为system或者sys时,身份需要选择SYSDBA 选择my objects,然后选择tables就可以看到自己创建的表 然后点击new->sql window,就可以打开...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133952.html原文链接:https://javaforall.cn

    2.5K20

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

    大家好,又见面了,我是你们的朋友全栈君。 不少小伙伴对PLSQL的应用还不是很了解,大家不必担心,在PLSQL使用视频教程中会告诉大家如何使用PLSQL。...进入PLSQL后切换数据库连接: PLSQL中编写SQL语句并执行 注意:选中要执行的语句,再执行,否则将执行所有SQL语句。...执行快捷键为:F8 有的老版本执行语句的按钮是这个样子: PLSQL中查看数据库表结构 在如下界面,按住Ctrl键并将鼠标移动到一个表名,此时表名变了颜色并出现下划线: 点击表名,便可显示表结构,...导入表格数据 直接在Excel表中复制行,粘贴到PLSQL的查询结果区即可。...(注意Excel中多加一列) 存储过程的新建、保存、测试 左边“Packages”点击右键,选择“New”,新建存储过程,右边自动创建“包”和“包体”: 点击“F8”键,执行存储过程并自动保存。

    1.2K10

    plsqldev使用指南

    Tools菜单–> Object Brower Folders,中把你经常点的几个目录(比如:Tables Views Seq Functions Procedures)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短...同时我觉得等宽字符可以减少程序的出错率,所以我所有的工具清一色用Courier New,如果某个IDE不支持这个字体,我基本上会选择放弃。哈,偶系个满挑惕的家伙。...下的Preference选项中的User Interface中选择Option,在右边对于的Autosave desktop中把前面的复选框勾选上。...有时由于PLD识别错误,右键点击对象并不能出来正确的菜单,可以在对象所在的DDL或DML语句的前面,加上分号,这样PLD就能正确的判断出对象的类型 2、Select for Update 有时我们需要把一些数据导入数据库中...下面介绍一下如何从Excel中提取文本插入到数据库中我们的Excel文件中有三列:在数据库中建立临时表:create table t1 (cino varchar2(100), contno varchar2

    2.4K10

    Oracle导出Excel的几种操作方案的比较

    最近有个需求,从Oracle导出数据到Excel。...可以在存储过程中调用utl_file,还可以通过程序进行调用,功能很强大,但是得了解它的用法,具体可参考《PL/SQL Packages and Types Reference》这个官方文档。...《一个执行计划异常变更的案例 - 外传之查询执行计划的几种方法》),因此,可能会对问题的判断产生影响。...《PLSQL Developer中控制结果集表格自动提交》 《PLSQL Developer几个可能的隐患》 《PLSQL Developer中文乱码问题》 《PLSQL Developer免密登录》...因此,采用何种数据导出的操作,还是取决于具体的需求,结合导出数据量,选择最合适方案。选择的过程, 其实就是设计的过程,和写程序一样,设计好了,事半功倍,"磨刀不误砍柴工"。

    1.8K30

    proc中插入VARCHAR2字段报ORA-01461: can bind a LONG value only for insert into a LONG column

    最近做一个天信达货运接口的项目,碰到这么个诡异的问题。 背景: 使用proc写的应用,向数据库插入记录。表中有三个VARCHAR2(4000)类型的字段。注:Oracle 9i的库。...文章中说明了问题之和9i及之前版本有关,并且指出同一个ORA的错误可能在高版本中出现,但根本原因和这里要描述的不同。...如果有一个这样的列,再加上一个LONG列,或者有两个或更多这样的列,数据库会认为你正在绑定两个LONG列。因此就会报这种错误。 对于以上错误的workaround方法,MOS则给出了四种: 1....,如果确认这表只会有1个LONG类型,没有大于1333字节的VARCHAR类型,或者仅仅有一个大于1333字节的VARCHAR类型,就可以绕开这个问题。...但使用PLSQL Developer或SQLPLUS这些非OCI驱动,则不会报错。 2. 使用proc绑定变量,根据上面的实验来看,会让ORA-01461这个错误的产生更混淆。 3.

    2.8K40

    oracle的userenv和nls_lang详解

    最后看下plsql上userenv执行的结果 ? 可以发现在windows上使用plsql的时候语言和地区使用的是plsql的环境变量NLS_LANG。...可以看到userenv('language')的返回值是AMERICAN_AMERICA.ZHS16GBK。这个值是怎么来的呢?从Oracle官网上看是取的默认值,如下图 ?...可以看到指定NLS_LANG之后,userenv('language')从会话中取得的语言和地区发生了变化,但是字符集仍然取得的是数据库的字符集。 4、问题:中文乱码在哪个环节产生的?...由以上分析可知,不管是什么样的客户端程序(不管是plsql还是sqlplus),在创建会话的时候字符都是取数据库本身的字符集。因此客户端程序和session的字符集不一致的时候会产生转码。...如果转码的过程中出现了字节损失,则存储的真实数据就是损失之后的数据。至于我们看到的乱码是因为存储的数据会在查询的时候再次转码成客户端程序的字符集,由于数据缺失,因此就乱码了。

    2.4K20
    领券