oracle-database-11g-plsql-编程实战笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Chap1

DML语句是select 、insert、update、delete和merge

DDL语句是create、alter、drop、rename、truncate、comment

DCL语句是grant、revoke

TCL语句是commit、rollback和savepoint

sql16个基本命令——参考书《OCA认证考试指南(IZ0-051)》清华大学出版社

《oracle database sql language reference 11g》有非遵循格式字符串依赖于格式掩码

chap2

2.1.3 关于语句中有多个单引号时处理:

1、

select'It''s a bird,no plan can''t be 'as pharse

from dual; 此处两个单引号即为一个单引号

2、只能用q 再加’(语句)’

select q'(It's a bird,no plan can't be)'as pharse

from dual;

均输出

PHARSE

----------------------------

It's a bird,no plan can't be

2.1.4

定义变量与申明变量的区别:

定义变量即为变量分配名称并指定数据类型;申明变量首先需要定义变量,然后为其赋值。(赋值也称为初始化)

替代变量前面要加&前缀且若替代变量为字符型时要加两个单引号如’&a’

declare

lv_whom varchar2(20);/*lv-whom为申明变量,a为替代变量,a没有变量类型*/

begin

lv_whom := '&a';

end;

或者

declare

lv_whom varchar2(20);

begin

lv_whom := &a;

end;但是要在输入框中字符加两个单引号

替代变量用define申明,且定义时不可以指定类型,默认为char型

①Define x=emp;

Select * from &x; /*调用要用&,此处不加单引号,解析后即为emp表*/

② define x=adasd;

select'&x' z from dual;/*此处解析后变为select' adasd ' z from dual ,此处必须要有单引号,使adasd作为直接变量,否则出错*/

所以替代变量是否加单引号要根据解析的值来确定

注意:避免在声明块中将任何实参赋给局部变量(constant变量除外),且替代变量与绑定变量都不应该在声明块中赋值

定义为constant的变量,必须在申明块中申明,这意味着常量必须先定义,再给他赋一个不变的值

绑定变量(bind)用var或variable申明

使用冒号(:)作为前缀

var a number

begin

:a := 22;

end;

上面也可以输出结果,下面也可以输出结果,但二者不能同时放一块

print a; /*此处a前面不能加冒号,print可用来输出所有类型的变量*/

另外也可通过exec直接给绑定变量赋值:

SQL> var x number /*必须要先定义再赋值,而替代变量定义时不需指定类型,直接赋值即可*/

SQL> var y number

SQL> exec :x :=1;:y :=2;/*exec 等价于begin … end*/

PL/SQL procedure successfully completed

x

---------

1

y

---------

2

也可以先定义好绑定变量,再将其赋给其他变量:

var a number

begin

:a := 22;

end;

现将其运行再

declare

lv_a number;

begin

lv_a:= :a;

dbms_output.put_line('hello,'||lv_a||'.');

end;

结果:hello,22.

将上面的代码放入到d:\q.sql中用@d:\q.sql;调用即可,但是里面的代码要正确

2.1.5命名块

1、过程块

create or replace procedure abc (aa varchar2) is

begin

dbms_output.put_line('sdhl'||aa);

end;

exec abc('dkjdhhdj');

可能出现

错误一:【ORA-00955: 名称已由现有对象使用】

这个错误说的不仅仅是有可能你有存储过程使用了【abc】,还有可能是你有表名叫【abc】或者其他oracle对象叫【abc】。

说明:其实由于你已经使用了【create or repalace procedure】即使有存储过程叫【abc】也会被覆盖掉,你用下面的命令查询一下,有什么对象叫【abc】,删掉它或者换一个存储过程名字。

【SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_NAME='STUDENT2';】

错误二:过程中的参数不能指定具体长度

2、函数块

错误一:函数里面要有return,不是dbms_output.put_line(但实验之后二者均可以成功创建函数,但是调用时只有return的能没有错误的执行)

create or replace function abc (aa varchar2)

return varchar2is

begin

dbms_output.put_line('sdhl'||aa);

end;

改为

create or replace function abc(aa varchar2) return varchar2is

begin

return'sdhl' || aa;

相关文档
最新文档