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

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的命令行工具。

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

posted on 2011-11-07 19:44  天魂无双  阅读(766)  评论(0编辑  收藏  举报

导航