在pl/sql中只能使用sql的部分dml(data manipulation language)和事务控制语句。dml 如 select,delete、insert和update。事务控制语句如commit、rollback、savepoint。
1. sql的语法
在pl/sql中dml的语法类似于sql里面的。需要强调的是where字段的字符串比较时,分为填充式比较和非填充式。填充式即为在比较之前会判断两字符串的长度,如果不一致会将小的那个用空格扩充。例如在填充式的比较中 'aaa'='aaa '将返回true,而非填充式的怎为false('aaa'<'aaa ')。pl/sql采用何种方式比较主要看比较双方的类型,只有当两个字符串都为固定长度时候才使用填充式的比较。在oracle里面char字符型和字符文字(用单引号括起来)是定长的,archarshuju类型是变长的。
2. 表的引用
一般格式如下:
[schema.]table[@dblink]
3. 数据库的链接
CREATE DATABASE LINK link_name CONNECT TO username INDENTIFIED BY password USING sqlnet_string;
这样使用前提是系统里安装了sql*net,其他的字段不用说了,只是sqlnet_string是需要连接数据库的名字(使用时有引号)。
4. 替代名(synonym)
类似于创建别名了。语法如下:
CREATE SYNONYM synonym_name FOR reference;
其中reference可以是一个表、过程、序列或者其他的数据库对象。一个实例如下:
CREATE SYNONYM backup_students FOR students@example_backup;
--使用synonym
UPDATE backup_students SET major='Music' WHERE id=1000;
5. 对象和系统权限
有两种类型的权限:对象权限(object)和系统权限(system)。对象权限允许对一个特定的对象(例如一个表)进行操作。系统权限允许对对象的整个类进行操作。
分配权限使用grant,收回权限使用revoke,其中(alter、index、references)不能直接在pl/sql中使用(DBMS_SQL包除外)。