程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle學習之路(五)-----oracle數據類型的一般操作

oracle學習之路(五)-----oracle數據類型的一般操作

編輯:Oracle教程

oracle學習之路(五)-----oracle數據類型的一般操作


1. 一些常見的運算符

運算符 意義 = 等於 <> , != , ~= , ^= 不等於 < 小於 > 大於 <= 小於或等於 >= 大於或等於 + 加號 - 減號 * 乘號 / 除號 := 賦值號 => 關系號 .. 范圍運算 || 字符連接符 IS NULL 是空值 BETWEEN AND 介於兩者之間 IN 在一列值中間 AND 邏輯與 OR 邏輯或 NOT 取返,如IS NOT NULL, NOT IN

2.變量賦值

  在PL/SQL編程中,變量賦值是一個值得注意的地方,它的語法如下:
  
* 變量賦值

 variable  := expression ;

* 聲明同時為變量賦值

 variable  variable_Type:= expression ;

3.變量計算

空值加數字仍是空值:NULL + < 數字> = NULL 空值加(連接)字符,結果為字符:NULL || <字符串> = < 字符串> 布爾值只有TRUE, FALSE及 NULL 三個值 數據庫賦值是通過 SELECT語句來完成的,每次執行 SELECT語句就賦值一次,一般要求被賦值的變量與SELECT中的列名要一一對應。如:
 DECLARE
  emp_id    emp.empno%TYPE :=7788;
  emp_name  emp.ename%TYPE;
  wages     emp.sal%TYPE;
BEGIN
  SELECT ename, NVL(sal,0) + NVL(comm,0) INTO emp_name, wages
  FROM emp WHERE empno = emp_id;
  DBMS_OUTPUT.PUT_LINE(emp_name||'----'||to_char(wages));
END;

  提示:不能將SELECT語句中的列賦值給布爾變量。

4.數據類型的轉換

1. CHAR 轉換為 NUMBER: TO_NUMBER('100.0')

2.NUMBER 轉換為CHAR: TO_CHAR('123.45')

3. 字符轉換為日期: v_date := TO_DATE('2001.07.03','yyyy.mm.dd');
4.日期轉換為字符 v_to_day := TO_CHAR(SYSDATE, 'yyyy.mm.dd hh24:mi:ss') ;

 -- Created on 2015/6/12 by LYH 
declare 
  str char(10):='100.0';
  i int:=421;
  total int;
begin
  total:=TO_NUMBER(str)+i;
  Dbms_Output.put_line(TO_CHAR(total));

end;

5.變量作用范圍及可見性

在PL/SQL編程中,如果在變量的定義上沒有做到統一的話,可能會隱藏一些危險的錯誤,這樣的原因主要是變量的作用范圍所致。變量的作用域是指變量的有效作用范圍,與其它高級語言類似,PL/SQL的變量作用范圍特點是:

變量的作用范圍是在你所引用的程序單元(塊、子程序、包)內。即從聲明變量開始到該塊的結束。 一個變量(標識)只能在你所引用的塊內是可見的。 當一個變量超出了作用范圍,PL/SQL引擎就釋放用來存放該變量的空間(因為它可能不用了)。
在子塊中重新定義該變量後,它的作用僅在該塊內。

一個例子

-- Created on 2015/6/15 by LYH 
declare 
  Emess char(4):='李四';

begin
  declare
  v1 number(10);
  begin
     SELECT fage
     INTO v1
     from t_employee
     where fname='Tom';

     Dbms_Output.put_line(v1);
  end;

  declare
  v1 number(10);
  begin
     SELECT fage
     INTO v1
     from t_employee
     where fname='Jerry';

     Dbms_Output.put_line(v1);
  end;

end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved