oracle預存程序的基本文法

來源:互聯網
上載者:User

1、預存程序的文法結構:

CREATE OR REPLACE PROCEDURE 過程名 AS

    聲明語句段;

BEGIN

    執行語句段;

EXCEPTION

    異常處理語句段;

END;

         

2、SELECT INTO STATEMENT

將SELECT查詢的結果存入到變數中,可以同時將多個列儲存多個變數中,必須有一條記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND)
例如:

BEGIN
    SELECT col1,col2 INTO 變數1,變數2 FROM typestruct where xxx;
EXCEPTION
    WHEN NO_DATA_FOUND THEN xxxx;
END;

        

3、IF 判斷
IF V_TEST=1 THEN
    BEGIN 
        do something
    END;
END IF;

        

4、WHILE迴圈
WHILE V_TEST=1 LOOP
    BEGIN
        XXXX
    END;
END LOOP;

           

5、變數賦值
V_TEST := 123;

        

6、用FOR IN 使用CURSOR
...
IS
    CURSOR cur IS SELECT * FROM xxx;
BEGIN
    FOR cur_result IN cur LOOP
        BEGIN
            V_SUM :=cur_result.列名1+cur_result.列名2
        END;
    END LOOP;
END;

    

7、帶參數的CURSOR
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(變數值);
    LOOP
        FETCH C_USER INTO V_NAME;
        EXIT FETCH C_USER%NOTFOUND;
        do something
    END LOOP;
CLOSE C_USER;

           

建立預存程序執行個體

CREATE OR REPLACE PROCEDURE stu_proc as 
--聲明語句段
v_name varchar2(20);
BEGIN
--執行語句段
SELECT o.sname INTO v_name FROM student o WHERE o.id=1;
DBMS_OUTPUT.put_line(v_name);
EXCEPTION
--異常處理語句段
WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.put_line('NO_DATA_FOUND');
END;

--調用預存程序
--CALL stu_proc();

 

相關文章

聯繫我們

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