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表示该类型为行数据类型,存储的是一行数据,一行数据里可以有多列,类似于表里的一行数据,也可以是游标里的一行数据。

View Code
 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、模块外面的函数不能访问模块里面的数据。见下例

block
 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、为变量赋值的操作,怎么从数据库中直接取值赋给变量。

View Code
 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、为一个表中插入多条记录。

View Code
 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函数实现。

View Code
 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;
原文地址:https://www.cnblogs.com/bindot/p/plsql.html