pl/sql developer学习笔记(一)
pl/sql developer的基本语法规则:
<1> 语句可以写在多行
<2> 词汇通过空格分隔
<3> 每条语句必须通过分号结束
<4> 标识符的规定:-最多可以包含30个字符-不能包含保留字,若有使用双引号括起来九 嵌套块和变量作用域:-不能包含保留字,若有使用双引号括起来-必须以字母字符开始
<5> 字符和日期必须用单引号括起来
<6> 注释可以是/* 和*/之间的多行注释也可以是单行注释,以--开始
<7> 赋值语句:使用“:=”作为赋值符号,而不是“=
<8>参数的格式大小写无关。
1、一些常用的基本类型:
基本类型的声明(基本类型的声明是在declare和begin之间):
1 para varchar2(20) :='hello china';--字符数据 2 a number:=3;--整形数据 3 b constant number :=1000;--常量
注意:常量的值是不能被改变的,否则会出现dORA-06550:PLS-00103的错误。
2、基本的输出及格式
1 dbms_output.put_line(v_para);--一般的输出 2 dbms_output.put_line('这里是输出的内容'||v_para); 3 dbms_output.put_line('第一个参数'||v_para1||'第二个参数'||v_para2);
输出的函数为:dbms_output.put_line,并且输出的内容之间是用"||"隔开。
3、声明表,相当于数组的功能。
1 declare 2 --第一步 3 type mytable_table_type is table of number index by binary_integer; 4 --第二步:创建一个mytable_tabe_type类型的变量 para_table 5 para_table mytable_table_type; 6 --和java数组的区别: 7 --1、不需要指定长度 8 --2、下标可以为负数 9 10 begin 11 para_table(0):=0; 12 para_table(-8):=-8; 13 para_table(10):=10; 14 15 dbms_output.put_line(para_table(-8)); 16 end;
4、record类型,相当于一个类或结构体。
1 declare 2 --创建类型 RECORD 3 type myrecord_record_type is record 4 ( 5 first_name varchar2(10), 6 last_name varchar2(20), 7 salary number(6) 8 ); 9 --定义变量 10 para_record myrecord_record_type; 11 12 begin 13 para_record.first_name:='zhou'; 14 para_record.last_name:='***'; 15 para_record.salary:=5500; 16 dbms_output.put_line(para_record.first_name||' '||para_record.last_name||'--- '||para_record.salary); 17 end;
5、%type和%rowtype的使用,%type可以获取表格中某一列的值类型。%rowtype表示该类型为行数据类型,存储的是一行数据,一行数据里可以有多列,类似于表里的一行数据,也可以是游标里的一行数据。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 declare 2 v_para1 number; 3 v_para2 demo.xm%type;--取得demo表中xm列的值 4 v_para3 v_para1%type;--获取已经声明的v_para1的类型,即为number 5 6 v_para4 demo%rowtype;--取表demo中的值 7 begin 8 -- Test statements here 9 v_para2:='china'; 10 v_para3:=1234; 11 dbms_output.put_line('v_para2的值:'||v_para2 ||' v_para3的值:'||v_para3); 12 13 14 select * into v_para4 from demo where xm='张杰' and xy='药学院';--如果有多条记录怎么都取出来 15 dbms_output.put_line(v_para4.xm||' '||v_para4.xy); 16 end;
6、模块外面的函数不能访问模块里面的数据。见下例
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 declare 2 -- Local variables here 3 v_para varchar2(50):='china'; 4 begin 5 dbms_output.put_line(v_para); 6 -- dbms_output.put_line(v_para_inside);/*错误,要先声明才能读出,在模块里面声明,只在里面有效*/ 7 declare 8 v_para_inside varchar2(10):='hello'; 9 begin 10 dbms_output.put_line(v_para); 11 dbms_output.put_line(v_para_inside); 12 end; 13 end;
7、为变量赋值的操作,怎么从数据库中直接取值赋给变量。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 declare 2 -- Local variables here 3 v_a varchar2(10); 4 v_b date; 5 v_c number; 6 begin 7 -- Test statements here 8 v_a:='2013-12-14'; 9 v_b:=to_date(v_a,'yyyy-mm-dd'); 10 dbms_output.put_line(v_b); 11 --为v_c赋值 12 select count(*) into v_c from demo; 13 dbms_output.put_line(v_c); 14 15 end;
8、为一个表中插入多条记录。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 declare 2 -- Local variables here 3 v_zpcj demo_zpcj.zpcj%type :='aaa'; 4 v_count number(2) :=1; 5 begin 6 -- Test statements here 7 loop 8 insert into demo_zpcj(zpcj) values(v_zpcj); 9 v_count:=v_count+1; 10 exit when v_count>5; 11 end loop; 12 13 end;
9、for函数实现。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 declare 2 -- Local variables here 3 s number:=0; 4 begin 5 -- Test statements here 6 for i in 1..100 loop 7 s:=s+i; 8 end loop; 9 dbms_output.put_line(s); 10 end;
原创不易,转载请声明 bindot
https://www.cnblogs.com/bindot/