SQL plus是與Oracle進行交互的客戶端工具
html
基本命令:
java
host:從SQL plus環境切換到系統環境,一邊執行操做系統命令
sql
disconnect/connect:disconnect斷開與Oracle的鏈接,connect name/password 取得與數據庫的鏈接數據庫
save filename 把當前緩衝區中的內容存放到存入文件當中
express
get filename 把文件中的內容放入緩衝區中
數組
edit:對當前的輸入內容進行編輯
oracle
/ run 和r從新運行上一次運行的SQL語句
函數
desc/describe :能夠查看對象的結構
工具
col:主要格式化列的顯示形式
oop
clear screen:清屏
2.PL/SQL:
變量:
variable_name [constant] datatype [:=default expression]
賦值:
X:=200; Y=Y+(X*20);
或者經過select into或fetch into 來賦值
select sum(salary) into totalSalary from emplory where dept=10;
數據類型:
數據類型 binary_integer:整數 主要用來計數而不是用來表示字段類型 number 數字 varchar2 可變字符 char 定長字符 date 日期 v_date date := to_date(sysdate,'yyyy-mm-dd hh24:mi:ss') long 長字符串 最長2g boolean true/false/null 能夠爲null 因此 必定要給個初始值 否則就爲空值,而不是false 賦值-格式 := v_number number(10):=0; v_varchar2 varchar2 :='douban'; 基本數據類型: number,character,date/time,Boolean 數字數據類型:binary_integer number 字符數據類型:char,long,raw,longraw,varchar2 日期和布爾類型:Boolean/date LOB數據類型:BFILE/BLOB/CLOB/NCLOB
塊結構:
declare v_empname varchar(50); v_sal number(10,2); begin select ename,sal into v_empname,v_sal from emp where empno=7369; dbms_output.put_line(v_empname||'---'||v_sal); exception when others then dbms_output.put_line('error'); end;
函數和存儲過程:
-存儲過程 create sequence emp_empno_sq start with 8000; create or replace procedure addemp(ename varchar2,job varchar2,sal number) is begin insert into emp values (emp_empno_sq.nextval,ename,job,sal,'23-1月 -82',10000,100,10); end; 顯示錯誤:show error 調用過程:兩種方式 1-exec addemp 過程名(參數) 1-call addemp 過程名(參數) 調用存貯過程 exec addemp('java','javaee',1000); java 調用存儲過程 實例 **************************************************************** class.forname("oracle.jdbc.oracledriver").newinstance(); string url = "jdbc:oracle:thin:@192.168.6.19:1531:orcl"; string user = "atf_ygj"; string password = "mas123"; conn = drivermanager.getconnection(url, user, password); conn.setautocommit(false); cstmt = conn.preparecall("{ call prc_1(?,?) }"); cstmt.setstring(1, "100"); cstmt.setstring(2, "testone"); cstmt.execute(); conn.commit(); ********************************************** --函數 返回值類型+is+返回變量名+類型 create or replace function getsalary(empname varchar2) return number is empsal%emp; begin select sal into empsal from emp where ename=empname; return empsal; end; var s number; call getsalary('scott') into:s; 函數的調用及限制 1.函數的調用(其具體調用方法參照上面的演示) a.使用全局變量接收函數的返回值 b.使用本地變量接受函數的返回值 c.在sql語句中直接調用函數 d.使用dbms_output調用函數 注:函數在調用的時候須要按位置指定參數,沒有存儲過程參數傳遞靈活 必須具備execute 函數的權限 var s number; exec:s:=getsalary('scott') select getsalary('scott') from dual 複雜的數據類型: 1.record: TYPE <記錄類型名> IS RECORD( <數據項1> <數據類型> 【NOT NULL【:=<表達式>】】; <數據項2> <數據類型> 【NOT NULL【:=<表達式>】】;) <記錄變量名> <記錄類型名> 例: declare type emp_record_type is record 定義一個記錄類型,名稱爲 emp_record_type (v_ename emp.ename%type, 格式「字段名 表名.表中的字段名%type」 v_job emp.job%type, v_sal emp.sal%type); emp_rec emp_record_type; 記錄變量名:emp_rec(別名) emp_record_type記錄類型 begin select ename,job,sal into emp_rec 格式「select 字段 into 記錄變量名 from 表名 where…」 from emp where empno=&eno; dbms_output.put_line(emp_rec.v_ename||':' emp_rec.v_job||';'||emp_rec.v_sal); end; / 2.table TYPE <表類型名> IS TABLE OF <數據類型> INDEX BY BINARY_INTEGER <表變量名> <表類型名> 說明: 表類型名:用戶定義的 數據類型:表中元素的數據類型 例子: declare TYPE ename_table_type IS TABLE OF emp.ename%TYPE INDEX BY BINARY_INTEGER; Ename_table ename_table_type; begin select ename INTO ename_table(1) from emp 注意了:這裏別忘了有個1哦。。。。指定元素的數目 where empno=7902; dbms_output.put_line('員工名:'||ename_table(1)); end; / 3.數組類型 與表類型的區別就是聲明瞭一個數組就肯定了數組中的元素的數目 特色:元素的次序是固定並且連續的,而且索引變量從1開始一直到其定義的最大值爲止 語法: TYPE <數組類型名> IS VARRAY(<MAX_SIZE>) OF <數據類型>; <表變量名> <表類型名> 說明: 數組類型名:用戶定義的 數據類型:數組中元素的數據類型 MAX_SIZE:指明數組元素個數的最大值
過程的基本結構: 控制結構:if condition then eg: if (a>b)and(c>d) then statement ; else if statement; else statement; 循環控制:loop....end loop(兩者之間能夠無限循環,所以必須有條件時期exit) while condition loop statement; endloop; for condition loop statement; endloop;
參考文章:
http://my.oschina.net/abian/blog/131822
http://blog.sina.com.cn/s/blog_64c236b10100nwzy.html