Oracle数据中的PL/SQL介绍
什么是Pl/SQL:
-
--PL/SQL的写法 declare /*申明部分:在此申明PL/SQL用到的变量,类型及游标,以及局部存储过程和函数*/ str varchar2(20); i number; begin /*执行部分:过程及SQL语句,即程序的主要部分*/ str :='Hello Oracle'; i:='aa'; dbms_output.put_line(str); exception /*执行异常部分:错误处理*/ when others then dbms_output.put_line('错误'); end;
-
declare str varchar2(10):='Hello ';/*定义时赋值*/ str2 varchar2(10); i constant number:=100;/*定义常量,但是必须在申明时赋值*/ begin str2:= 'Oracle';/*在begin中赋值*/ dbms_output.put_line(str||str2);/*\\是Oracle的连接符*/ dbms_output.put_line(i); exception when others then dbms_output.put_line('出错了'); end;
-
-
declare v_stu_id number; v_stu_name varchar2(10); v_stu_age number; begin select stu_id,stu_name,stu_age into v_stu_id,v_stu_name,v_stu_age/*这里查询出来要赋值给变量*/ from tab_stu; end;
-
declare v_stu_id number; v_stu_name varchar2(10); v_stu_age number; begin select stu_id,stu_name,stu_age into v_stu_id,v_stu_name,v_stu_age from tab_stu where stu_id=1; dbms_output.put_line('stu_id:'||v_stu_id); dbms_output.put_line('stu_name:'||v_stu_name); dbms_output.put_line('stu_age:'||v_stu_age); end;stu_id:1 stu_name:张三 stu_age:21
-
--插入 declare begin insert into tab_stu(stu_id,stu_name,stu_age) values(4,'赵六','22'); commit;/*记得提交*/ end;
-
-
--%type的使用 declare v_stu_id tab_stu.stu_id%type; v_stu_name tab_stu.stu_name%type; v_stu_age tab_stu.stu_age%type; begin select stu_id,stu_name,stu_age into v_stu_id,v_stu_name,v_stu_age from tab_stu where stu_id=1; dbms_output.put_line('stu_id:'||v_stu_id); dbms_output.put_line('stu_name:'||v_stu_name); dbms_output.put_line('stu_age:'||v_stu_age); end;
-
--%rowtype的使用 declare v_tab_stu_row tab_stu%rowtype; begin select stu_id,stu_name,stu_age into v_tab_stu_row.stu_id,v_tab_stu_row.stu_name,v_tab_stu_row.stu_age from tab_stu where stu_id=2; dbms_output.put_line('stu_id:'||v_tab_stu_row.stu_id); dbms_output.put_line('stu_name:'||v_tab_stu_row.stu_name); dbms_output.put_line('stu_age:'||v_tab_stu_row.stu_age); end;第二种用法--%rowtype的使用 declare v_tab_stu_row tab_stu%rowtype; begin select * into v_tab_stu_row from tab_stu where stu_id=3; dbms_output.put_line('stu_id:'||v_tab_stu_row.stu_id); dbms_output.put_line('stu_name:'||v_tab_stu_row.stu_name); dbms_output.put_line('stu_age:'||v_tab_stu_row.stu_age); end;
-
-
--可变数组的使用varray declare type strings is varray(6) of varchar(10);--这里其实就像定义了一个对象 var_array strings:=strings('张三','孙八','孙七','赵六','王五','李四');--这里就是这个对象的具体实现,和定义 begin dbms_output.put_line(var_array(1)); dbms_output.put_line(var_array(2)); dbms_output.put_line(var_array(3)); dbms_output.put_line(var_array(4)); dbms_output.put_line(var_array(5)); dbms_output.put_line(var_array(6)); end;输出张三 孙八 孙七 赵六 王五 李四
-
--可变数据类型table declare type tableStrings is table of varchar2(10) index by binary_integer;--定义table类型的下标是二进制类型的无限增长的 var_table tableStrings;--为定义好的类型,定义一个变量 begin var_table(1):='Hello';--为变量的索引赋值 var_table(999):='Word';--为变量的索引赋值 dbms_output.put_line(var_table(1)||' '||var_table(999)); end;
输出:Hello Word -
--可变数据类型table的使用2 declare type table_row is table of tab_stu%rowtype index by binary_integer; var_tab_stu table_row; begin select stu_id,stu_name into var_tab_stu(100).stu_id,var_tab_stu(100).stu_name from tab_stu where stu_id=2; dbms_output.put_line(var_tab_stu(100).stu_id ||' '|| var_tab_stu(100).stu_name); end;
输出:2 李四 -
--record理解为Java中的集合 declare type v_record is record( re_id number,--可以是普通变量 re_name tab_stu.stu_name%type,--可以是表中的一个字段的变量 r_tab_stu tab_stu%rowtype--也可以是表中的一行 ); v_r v_record;--需要赋给变量在使用时 begin select stu_id,stu_name,stu_age into v_r.re_id, v_r.re_name, v_r.r_tab_stu.stu_age from tab_stu where stu_id=1; dbms_output.put_line(v_r.re_id); dbms_output.put_line(v_r.re_name); dbms_output.put_line(v_r.r_tab_stu.stu_age); end;
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。