1. 程式人生 > 實用技巧 >Oracle 定義變數總結

Oracle 定義變數總結

首先,當在cmd裡辦入scott密碼提示錯誤時,可以這樣改一下,scott的解鎖命令是:

    以system使用者登入:
cmd
sqlplus system/tigertiger
alter user scott identified by "tiger" account unlock;

-學習塊的結構
--學習定義變數(瞭解資料型別)及賦值
--瞭解:各種PL/SQL塊的型別

--塊的結構
--案例:根據工號,輸出員工姓名
SELECT * FROM emp;

--塊!
DECLARE
  v_empno NUMBER(4);
  v_ename VARCHAR2(10);
BEGIN
v_empno := &請輸入工號; --必須要將查詢結果放到變數 SELECT ename INTO v_ename FROM emp WHERE empno=v_empno; dbms_output.put_line(v_ename); END; --異常 DECLARE v_empno NUMBER(4); v_ename VARCHAR2(10); BEGIN v_empno := &請輸入工號; --必須要將查詢結果放到變數 SELECT ename INTO v_ename FROM emp WHERE empno=
v_empno; dbms_output.put_line(v_ename); EXCEPTION WHEN OTHERS THEN dbms_output.put_line('執行出錯了,老闆!'); END; --小結 DECLARE --變數區(不能在begin..end中定義) BEGIN --業務程式碼區 excetipn --異常捕獲區 END; --定義變數(瞭解資料型別) --2種:儲存一個值=簡單變數;儲存多個值=複合變數 --簡單變數型別:char,varchar2,number,date(同時也列型別),boolean,表.欄位%type
--複合變數:表%rowtype,record DECLARE v_empno NUMBER(4); v_ename VARCHAR2(10); v_job emp.job%TYPE; --如果欄位型別改變,指令碼不需要改變 BEGIN v_empno := 7566; SELECT ename,job INTO v_ename,v_job FROM emp WHERE empno=v_empno; dbms_output.put_line(v_ename); IF(v_job='MANAGER')THEN dbms_output.put_line('經理,吃過飯沒。'); END IF; END; --需要同上,將多個變數放到一個記錄物件中 DECLARE v_empno NUMBER(4); my_row emp%ROWTYPE; BEGIN v_empno := 7566; SELECT * INTO my_row FROM emp WHERE empno=v_empno; dbms_output.put_line(my_row.ename||','||my_row.sal); END; --有時不需要一整列,只需要其中幾個列。此時用record DECLARE --自定義複合型別 my_emp TYPE my_emp_type IS RECORD( yg_name emp.ename%TYPE, yg_sal emp.sal%TYPE ); my_row my_emp_type; --變數名 資料型別 BEGIN SELECT ename,sal INTO my_row FROM emp WHERE empno=7788; dbms_output.put_line(my_row.yg_name||','||my_row.yg_sal); END; --擴充套件:Oracle沒有boolean型別? --思考:性別 true=男,false=女。缺點?性別=保密。所以Oracle建立用char(1)替代,1=男2=女3=保密4=人妖 --Oracle的各種集合型別,對應 java的陣列。 --引用變數:在講解儲存過程以後再講解。 --繫結變數(命令視窗中執行,繫結變數用了 :) SQL> var name varchar2(10) SQL> execute :name :='hello'; PL/SQL procedure successfully completed name --------- hello SQL> print name; name --------- hello