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的命令行工具。
注:我感觉这个工具有点像是一个混淆器的感觉。