读书人

Oracle系列之一-Datatype And Subprog

发布时间: 2012-07-02 17:46:22 作者: rapoo

Oracle系列之一----Datatype And Subprogram

Oracle系列之一----Datatype And Subprogram:http://overshit.iteye.com/admin/blogs/932585;
Oracle系列之二----Exception And Expression:http://overshit.iteye.com/admin/blogs/932605;
Oracle系列之三----Implicit Cursor:http://overshit.iteye.com/admin/blogs/932609;
Oracle系列之四----Dynamic Cursor:http://overshit.iteye.com/admin/blogs/932610;
Oracle系列之五----Cursor And Variable:http://overshit.iteye.com/admin/blogs/932612;
Oracle系列之六----Procedure--Package--Purity:http://overshit.iteye.com/admin/blogs/932615;
Oracle系列之七----Trigger:http://overshit.iteye.com/admin/blogs/932616;

?

请先查看Oracle系列之零:Oracle体系结构

?

请先在Oracle 10g下创建用户:housesale,密码为housesale,赋予DBA Permission

?

Oracle系列之一-Datatype And Subprogram

?

----1:---------------------------------------------declare  v_date date;begin  v_date := sysdate + 1;  dbms_output.put_line(v_date);end;select sysdate from dual;----2:-------------------------------------------------declaredeclare  v_custname varchar2(50);begin----execute  select cust.custname into v_custname   from customer cust  where cust.custid = 96;  dbms_output.put_line('custname:' || v_custname);----deal with exceptionException  when no_data_found then  dbms_output.put_line('This customer does not exists!');end;----3:---------------------------------------------subprogram(procedure,function,trigger,package)----3.1:procedure----create or replace procedure update_age(p_custname varchar2,p_newAge number)isbegin  update customer set custage = p_newAge  where custname = p_custname;  commit;end;----execute this sql in sql commandexecute update_age('彭海燕',20);----execute this sql in sql editcall update_age('彭海燕',18);----3.2:function----create or replace function func_add(param number)return numberasbegin  return param + 10;end;select func_add(10) from dual;select func_add(custage) from customer where custid = 96;----3.3:trigger----create or replace trigger tri_cust_update  before update or delete on customer  for each rowdeclarebegin  if(:old.custage > :new.custage) then    raise_application_error('-20001','age can not reduce,add it!');  end if;end;----test expressionupdate customer set custage = '80' where custid = 96;select * from customer where custid = 96;----3.4:package--------package head such as interface in Javacreate or replace package pack_addis  function func_add(param number)  return number;end;----and package body implements interfacecreate or replace package body pack_addis  function func_add(param number)  return number  as  begin    return param + 10;  end;end;  select pack_add.func_add(50) from dual;select pack_add.func_add(custage) from customer where custid = 96;  ----4:query oracle character-----------------------login as system administratorselect name,value$ from props$ where name like '%NLS%'----5:datatype and ?variable----------------------------5.1:collection type----declare  Type customer_table_type is table of customer.custage%type index by binary_integer;  custtype customer_table_type;begin  ----operator index ?directly  select custage into custtype(-1) from customer where custname = '彭海燕' and custid = 96;  dbms_output.put_line('custage is: ' || custtype(-1));  ----let query result insert into collection directly  select custage bulk collect into custtype from customer;  dbms_output.put_line('custage is: ' || custtype(1));  dbms_output.put_line('count is: ' || custtype.count);end;declare  Type customer_table_type is table of customer.custage%type index by binary_integer;  custtype customer_table_type;begin  ----operator index ?directly  select custage into custtype(-1) from customer where custname = '彭海燕' and custid = 96;    dbms_output.put_line('custage is: ' || custtype(-1));  ----let query result insert into collection directly  select custage bulk collect into custtype from customer;  for i in custtype.first..custtype.last     loop      dbms_output.put_line('The ' || i || ' position is ' || custtype(i));    end loop;end;----5.2 LOB datatype-------------------------------drop table bfile_tab;drop table utl_lob_test;grant create any directory to housesale;grant create any library to housesale;create or replace directory meilin_dir as 'D:\\ora';create table bfile_tab(bfile_column bfile);create table utl_lob_test(blob_column blob);----execute expression as follows will insert picture into utl_lob_test blob_column column as d:\ora catalogdeclare  a_blob blob;  ----MEILIN_DIR must be uppercase,and you should put meilin.jpg as path:'D:/ora/meilin.jpg'  a_bfile bfile := bfilename('MEILIN_DIR','meilin.jpg');begin  insert into bfile_tab values(a_bfile)    returning bfile_column into a_bfile;  insert into utl_lob_test values (empty_blob())    returning blob_column into a_blob;    dbms_lob.fileopen(a_bfile);    dbms_lob.loadfromfile(a_blob,a_bfile,dbms_lob.getlength(a_bfile));    dbms_lob.fileclose(a_bfile);    commit;end;select * from utl_lob_test;

?

Oracle系列之一-Datatype And Subprogram

?

注:Oracle对LOB字段类型的的处理:这里做个入门,对Java操作LOB类型字段请查看:

?

JDBC operator oracle LOB column:http://overshit.iteye.com/admin/blogs/932619

?

?

----6:---------------------------------------------create or replace procedure house_countasv_houCount number(10);begin     select count(*) into v_houCount from house;     dbms_output.put_line('house;' || v_houCount); end;execute house_count;----2:call procedure at hr accountgrant execute on house_countto hr;----login hrbegin    housesale.house_count;end;create or replace procedure house_list       as       cursor house_cursor is       select housenumber,housetype,edificeid from house where housenumber <105 and housetype > 0 and edificeid < 3;begin       for house_record in house_cursor loop           dbms_output.put_line('housenumber = [' || house_record.housenumber || '] ---- housetype = [' || house_record.housetype || ']');       end loop;       house_count;end;select * from house----7:nine nine multiplication table---------------begin  for i in 1..9 loop    for j in 1..i loop      dbms_output.put('' || j || '*' || i || '=' || j*i || ' ');    end loop;    dbms_output.put_line('');  end loop;end;

?

Oracle系列SQL及数据库下载:http://download.csdn.net/source/3046868

?

?

?

?

?

?

?

?

?

?

?

?

?

读书人网 >编程

热点推荐