博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle PL/SQL 程序设计读书笔记 - 第2章 创建并运行 PL/SQL代码
阅读量:5249 次
发布时间:2019-06-14

本文共 2136 字,大约阅读时间需要 7 分钟。

Oracle PL/SQL 程序设计读书笔记 - 第2章 创建并运行 PL/SQL代码

Oracle PL/SQL 程序设计读书笔记 - 第2章 创建并运行 PL/SQL代码

2.3.1 启动SQL*Plus

OS>sqlplus OS>sqlplus username/password OS>sqlplus /nolog

使用/NOLOG选项来启动SQLPlus,这种方式只是进入SQLPlus环境,而不会连接到数据库。接下来再通过CONNECT命令,并提供用户名和密码进入数据库。

SQL>CONNECT username/password@sid

2.3.3 运行PL/SQL程序

SQLPlus缺少会“吃掉”输出内容,为了正常地显示内容。你必须要通过一个SQLPlus的命令打开SERVEROUTPUT。如:

SQL>SET SERVEROUTPUT ON

如果想让SQL*Plus知道你已经完成了PL/SQL的录入,你必须使用一个斜杠"/"作为结尾。如:

SQL>BEGIN  2    DBMS_OUTPUT.PUT_LINE('Bey look');  3  END;  4  /
  • 斜杠"/"的含义是“执行刚录入的这个语句”,不管刚录入的是一个SQL语句还是一个PL/SQL代码。
  • 斜杠"/"不属于PL/SQL语法,也不属于SQL语法,它是SQL*Plus特有命令;
  • 斜杠"/"只能自己出现在一行中,这一行不能再有其他的命令

2.3.4 运行脚本

SQL>@abc.sql SQL>START abc.sql

Oracle又提供了@@命令。两个@符号意味着,在本次调用中“请假设当前目录已经改成了当前执行文件所在的目录。”

2.3.6 其他SQL*Plus任务

要看当前会话的各种设置的值,使用这个命令:

SQL>SHOW ALL

定义变量:

SQL>DEFINE x="abc" SQL>DEFINE x

要引用这样的变量,需要使用&符号,你还要在变量周围加上单引号

SQL>SELECT '&x' FROM DUAL;

绑定变量:

SQL>VARISBLE x VARCHAR(10) SQL>BEGIN  2    :x :='h';  3  END;  4  /

输出保存到文件

SQL>SPOOL report SQL>... SQL>SPOOL OFF

默认扩展名:lst

在启动时加载你的自定义环境。

  • 1.首先寻找$ORACLE_HOME/sqlplus/admin/glogin.sql脚本。
  • 2.接下来,SQL*Plus就会运行当前目录下的login.sql脚本,如果有这个脚本的话。

2.3.7 SQL*Plus中的错误处理

如果SQLPlus中遇到了一个SQL或者PL/SQL的错误,出现错误后中止SQLPlus运行。

SQL>WHENEVER SQLERROR EXIT SQL.SQLCODE SQL>WHENEVER SQLERROR SQL.SQLCODE EXIT ROLLBACK

2.4.1 创建存储过程

CREATE FUNCTION XXX

如果已经存在此函数的话,CREATE命令就会失败,并给出错误消息ORA-0955:name is already used by an existing object.

CREATE OR REPLACE FUNCTION XXX

能够避免先删除然后重建程序的方法所带来的副作用;换句话说,它能够保留你已经赋予其他用户或者角色的针对这个对象的权限。

执行以上命令,如果出现编译错误的话可以通过如下命令查看命令。

SQL>SHOW ERROR category [schema.]object

如:

SQL>SHOW ERROR FUNCTION XXX

category为类别

2.4.3 显示存储过程

SQL>DESCRIBE XXX 可以查看存储过程的调用接口信息。 如果想查看整个源代码的话,可以查看USERSOURCE或TRIGGERSOURCE表中的内容。

2.4.4 存储过程的授权和别名

授权

GRANT EXECUTE ON XXX TO username/rolename;

去掉权限

REVOKE EXECUTE ON XXX TO username/rolename;

创建别名:

SQL>CREATE OR REPLACE SYNONYM XXX FROM user.XXX;

2.4.5 删除存储过程

DROP FUNCTION XXX;

删除整个包(声明部分和包体)

DROP PACKAGE pkgname;

只删除包体。

DROP PACKAGE BODY pkgname;

如果你删除了一个存储过程,而其他程序又调用了该存储过程,那么这些调用程序就会被标识成无效。

2.4.6 隐藏存储过程的源代码

可以通过Oracle提供了一个叫wrap的命令行工具。

注:我感觉这个工具有点像是一个混淆器的感觉。

转载于:https://www.cnblogs.com/tjpanda88/archive/2011/11/07/2240223.html

你可能感兴趣的文章
自定义OffMeshLink跳跃曲线
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
学习Redux之分析Redux核心代码分析
查看>>
ABAP 创建和调用WebService
查看>>
C# 实例化顺序
查看>>
CSS水平垂直居中总结
查看>>
委托又给我惹麻烦了————记委托链的取消注册、获取返回值
查看>>
ps怎么把白色背景变透明
查看>>
gource 安装教程
查看>>
字符串转 Boolean 的正确方式
查看>>
给你的网站404页面加上“宝贝寻亲”公益页面
查看>>
整理推荐的CSS属性书写顺序
查看>>
协程, IO阻塞模型 和 IO非阻塞模型
查看>>
ServerSocket和Socket通信
查看>>
css & input type & search icon
查看>>
jQuery插件开发详细教程
查看>>
Crontab 在linux中的非常有用的Schedule Jobs
查看>>
ProxySQL Scheduler
查看>>
mdb2csv
查看>>