PL/SQL函數和過程的建立和調用的基礎文法

來源:互聯網
上載者:User

標籤:資料   預存程序的調用   others   highlight   etc   結果   賦值   log   用法   

--PL/SQL基礎知識學習--一、PL/SQL語句塊,基礎文法格式DECLARE  --變數聲明列表  info varchar(25); --變數聲明  stu_unm integer := 15;BEGIN  --語句塊  info := ‘soulsjie‘; --變數的賦值  DBMS_OUTPUT.put(‘HELLO WORLD!‘); --輸出不換行  DBMS_OUTPUT.put_line(info || stu_unm); --輸出換行 ||為字串的串連符  --異常處理塊END;--1.迴圈--1.1for迴圈DECLAREi INTEGER :=1;j INTEGER :=10;BEGIN  FOR S IN i .. j LOOP   DBMS_OUTPUT.put_line(‘序號是‘||S);    END LOOP;END;--1.2if語句DECLAREchengji integer;BEGIN  chengji :=&temp;  DBMS_OUTPUT.put_line(‘您輸入的成績是:‘||chengji);  IF chengji>90 THEN  --注意不需要‘;’號    DBMS_OUTPUT.put_line(‘優秀‘);    ELSIF chengji>=60 THEN  --注意不是ELSEIF      DBMS_OUTPUT.put_line(‘及格‘);      ELSE        DBMS_OUTPUT.put_line(‘不及格‘);        END IF;END;--1.3while迴圈DECLAREchengji integer :=10;BEGIN  WHILE chengji>0 LOOP    DBMS_OUTPUT.put_line(chengji);    chengji :=chengji-1;    END LOOP;END;--1.4do whlie 迴圈DECLAREi INTEGER :=12; BEGIN   LOOP      DBMS_OUTPUT.put_line(i);     i:=i-1;     EXIT WHEN i=0;    END LOOP;  END;    --1.5case 語句DECLARE i VARCHAR(20);BEGIN    i :=‘&temp‘;    CASE i    WHEN ‘y‘ THEN DBMS_OUTPUT.put_line(‘您選擇了是‘);    WHEN ‘n‘ THEN DBMS_OUTPUT.put_line(‘您選擇了否‘);    ELSE DBMS_OUTPUT.put_line(‘預設項‘);    END case;  END;     SELECT I.STU_ID 學號,          (CASE I.STU_SEX            WHEN ‘男‘ THEN             ‘1‘             WHEN ‘女‘ THEN               ‘0‘            ELSE              ‘未知‘          END)     FROM STU_INFO I;          --1.6 GOTO 語句--建立節點,跳轉到指定節點DECLARE BEGIN   <<a>>  DBMS_OUTPUT.put_line(‘A‘);  goto c;  <<b>>  DBMS_OUTPUT.put_line(‘B‘);  <<c>>  DBMS_OUTPUT.put_line(‘C‘);  END;      --2.SELECT INTO 的用法。統計學生資訊表中的學生總數  --select into 將查詢到的結果賦給變數  DECLARE   TEMP INTEGER;  us_name VARCHAR(20);  BEGIN    SELECT COUNT(*) INTO TEMP FROM (SELECT DISTINCT STU_ID FROM STU_INFO);--查詢學生資訊記錄條總數   DBMS_OUTPUT.put_line(‘總記錄條數有‘||TEMP||‘條‘);   SELECT I.STU_NAME INTO us_name FROM STU_INFO I WHERE I.STU_ID=‘180301‘;--查詢指定帳號的學生姓名   DBMS_OUTPUT.put_line(‘姓名是:‘||us_name);  END;       --3.cursor 利用遊標讀取資料  遍曆一個記錄集   --%ISOPEN(遊標是否已經開啟)   /%FOUND(遍曆到資料)   /%NOTFOUND(未遍曆到資料)    /%ROWCOUNT(遍曆到資料的記錄條數)   DECLARE    CURSOR youbiao1 IS SELECT * FROM STU_INFO I WHERE I.STU_SEX=‘男‘; --a.建立一個遊標    temp youbiao1%rowtype;--b.建立一個變數  記錄每行內容   BEGIN      IF NOT youbiao1%ISOPEN THEN OPEN youbiao1;--c.若該遊標未開啟則開啟該遊標       DBMS_OUTPUT.put_line(‘遊標已被開啟‘);     END IF;     LOOP --d.利用迴圈讓遊標讀取資料       FETCH youbiao1 INTO temp;        EXIT WHEN youbiao1%NOTFOUND;--e.當記錄讀取完畢跳出迴圈        DBMS_OUTPUT.put_line(temp.STU_NAME);       END LOOP;       CLOSE youbiao1;--f.關閉遊標        DBMS_OUTPUT.put_line(‘遊標已關閉‘);     END;               --4.異常處理     DECLARE     aa INTEGER;      BEGIN        aa:=1/0;--函數執行       EXCEPTION WHEN OTHERS THEN--異常處理塊          DBMS_OUTPUT.put_line(‘出現異常!‘);       END;       --二、函數的建立和使用/*基本格式 CREATE [OR REPLACE] FUNCTION FUN_NAME [(參數1 參數類型, 參數2 參數類型, 參數n 參數類型)] RETURN 傳回值類型ISBEGIN   函數體  RETURN 具體的傳回值;  END FUN_NAME;*/--建立無參數函數CREATE OR REPLACE FUNCTION F_WUCANSHU RETURN INTEGERIS BEGIN   RETURN 3+6;  END F_WUCANSHU;SELECT F_WUCANSHU FROM DUAL;--函數的調用--建立有參函數CREATE OR REPLACE FUNCTION F_YOUCANSHU(num1 INTEGER,num2 INTEGER) RETURN INTEGERISBEGIN   RETURN (num1*num2);  END F_YOUCANSHU;SELECT F_YOUCANSHU(&數字1,&數字2) 乘積是 FROM DUAL;--調用有參函數--建立函數 按照使用者輸入的學生學號查詢該學生的姓名資訊CREATE OR REPLACE FUNCTION F_SEARCH_NAME(stu_id VARCHAR) RETURN VARCHAR --注意參數的聲明不帶長度,如:(stu_id VARCHAR)IStemp VARCHAR(20);stu VARCHAR(20);BEGIN  stu:=stu_id;  SELECT DISTINCT STU_NAME INTO temp FROM STU_INFO WHERE STU_ID=stu;--將查詢到的學號儲存到變數temp中  RETURN temp;--將結果返回  END F_SEARCH_NAME;SELECT F_SEARCH_NAME(‘&請輸入要查詢的學號‘) 查詢結果 FROM DUAL;--三、過程的建立和使用--完成資料庫中特定的任務,可以永久儲存在資料庫中供其他程式使用--3.1過程建立的基本格式/*CREATE [OR REPLACE] PROCEDURE PRO_NAME [參數名 IN 參數類型, ... 參數N IN 參數N的類型]ISBEGIN   //過程要執行的代碼體  END;*/CREATE OR REPLACE PROCEDURE insert_stuinfo(stu_id IN VARCHAR,--注意在聲明參數的類型時不加長度 與函數的參數聲明(canshu VARCHAR)不同stu_name IN VARCHAR,stu_class IN VARCHAR,stu_sex IN VARCHAR)ISBEGIN   INSERT INTO STU_INFO VALUES(stu_id,stu_name,stu_class,stu_sex);--過程要執行的SQL語句塊  END;CALL insert_stuinfo(‘jie‘,‘jie‘,‘jie‘,‘jie‘);--預存程序的調用

 

PL/SQL函數和過程的建立和調用的基礎文法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.