oracle 學習(五)

來源:互聯網
上載者:User

 

/*
查看錶hr.employees表結構中,SALARY欄位的定義:
desc hr.employees;
用ctrl+單擊
*/

/*
分別用NUMBER、%TYPE、子類型salary定義變數v_salary_num、v_salary_type、v_salary_subtype。
將hr.employees表的第一條記錄中的SALARY值賦值給上述三個變數。並將上述三個變數在控制台輸出。
*/
DECLARE
   v_salary_num NUMBER(8,2);
  v_salary_type hr.employees.salary%TYPE;
 
   SUBTYPE salary_subtype IS hr.employees.salary%TYPE;
   v_salary_sub salary_subtype;
BEGIN
    SELECT salary INTO v_salary_sub
      FROM hr.employees
    WHERE ROWNUM<2;
  
  v_salary_num:=v_salary_sub;
  v_salary_type:=v_salary_sub;
  
  DBMS_OUTPUT.put_line('v_salary_sub='||to_char(v_salary_sub,'9999.99'));
  DBMS_OUTPUT.put_line('v_salary_num='||v_salary_num);
  DBMS_OUTPUT.put_line('v_salary_type='||v_salary_type);
END;

/*
接練習1,使用ROWTYPE定義一個新的變數,v_employee,並將第一條記錄賦值給v_employee。
分別使用IF-ELSE-END IF和CASE判斷資料庫中得到的salary的值,
如果>2000列印出:[員工姓名]的salary>2000.
如果=2000列印出:[員工姓名]的salary=2000.
如果<2000列印出:[員工姓名]的salary<2000
*/
DECLARE
   v_employee hr.employees%ROWTYPE;
  v_salary hr.employees.salary%TYPE:=4000;
 
BEGIN
    SELECT * INTO v_employee
      FROM hr.employees
    WHERE salary<v_salary
       AND ROWNUM<2;
    
  
   -- select * from hr.employees where salary<4000;
  
  IF v_employee.salary>v_salary THEN
     DBMS_OUTPUT.PUT_LINE('['||v_employee.first_name||v_employee.last_name||']的salary>2000,='||TO_CHAR(v_employee.salary));
  ELSIF v_employee.salary=v_salary THEN
     DBMS_OUTPUT.PUT_LINE('['||v_employee.first_name||v_employee.last_name||']的salary=2000');
  ELSE
     DBMS_OUTPUT.PUT_LINE('['||v_employee.first_name||v_employee.last_name||']的salary<2000');
  END IF;
  
  CASE
     WHEN v_employee.salary>v_salary THEN
      DBMS_OUTPUT.PUT_LINE('['||v_employee.first_name||v_employee.last_name||']的salary>2000,='||TO_CHAR(v_employee.salary));
    WHEN v_employee.salary=v_salary THEN
      DBMS_OUTPUT.PUT_LINE('['||v_employee.first_name||v_employee.last_name||']的salary>2000,='||TO_CHAR(v_employee.salary));
    ELSE
      DBMS_OUTPUT.PUT_LINE('['||v_employee.first_name||v_employee.last_name||']的salary>2000,='||TO_CHAR(v_employee.salary));
  END CASE;
END;

/*
分別使用LOOP、WHILE、FOR迴圈從10到1列印出一串數字。
*/

--分別使用LOOP,EXIT
DECLARE
    v_loopcount number(2):=11;
BEGIN
    LOOP   
    v_loopcount:=v_loopcount-1;
    IF v_loopcount<1 THEN
       EXIT;
     END IF;
    DBMS_OUTPUT.PUT_LINE(v_loopcount);
  END LOOP;
END;

--分別使用LOOP,EXIT WHEN
DECLARE
    v_loopcount number(2):=11;
BEGIN
    LOOP   
    v_loopcount:=v_loopcount-1;
    
    EXIT WHEN (v_loopcount<1);
     DBMS_OUTPUT.PUT_LINE(v_loopcount);
  END LOOP;
END;

--分別使用WHILE
DECLARE
    v_loopcount number(2):=10;
BEGIN
    WHILE v_loopcount>0 LOOP
      DBMS_OUTPUT.PUT_LINE(v_loopcount);
    v_loopcount:=v_loopcount-1;    
  END LOOP;
END;

--分別使用FOR
DECLARE
    v_loopcount number(2):=10;
BEGIN
    FOR v_loopcount IN REVERSE 1 .. 10 LOOP
      DBMS_OUTPUT.PUT_LINE(v_loopcount);
  END LOOP;
END;

--分別使用FOR
DECLARE
    v_loopcount number(2):=10;
BEGIN
    FOR v_loopcount IN 1 .. 10 LOOP
      DBMS_OUTPUT.PUT_LINE(11-v_loopcount);
  END LOOP;
END; 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.