小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

oracle 存儲過程的基本語法_大北的空間

 haozhengfang 2008-12-09

1.基本結(jié)構(gòu)
CREATE OR REPLACE PROCEDURE 存儲過程名字
(
    參數(shù)1 IN NUMBER,
    參數(shù)2 IN NUMBER
) IS
變量1 INTEGER :=0;
變量2 DATE;
BEGIN

END 存儲過程名字

2.SELECT INTO STATEMENT
將select查詢的結(jié)果存入到變量中,可以同時將多個列存儲多個變量中,必須有一條
記錄,否則拋出異常(如果沒有記錄拋出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 循環(huán)
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.帶參數(shù)的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;

8.用pl/sql developer debug
連接數(shù)據(jù)庫后建立一個Test WINDOW
在窗口輸入調(diào)用SP的代碼,F9開始debug,CTRL+N單步調(diào)試

 

Create procedure procedue_name
    [@parameter data_type][output]
    [with]{recompile|encryption}
    as
    sql_statement

    解釋 output:表示此參數(shù)是可傳回的.

         with {recompile|encryption}

          recompile:表示每次執(zhí)行此存儲過程時都重新編譯一次

          encryption:所創(chuàng)建的存儲過程的內(nèi)容會被加密

    表book的內(nèi)容如下

   編號     書名                           價格

   001       C語言入門                   $30

   002       PowerBuilder報表開發(fā)   $52

    實例1:查詢表Book的內(nèi)容

create proc query_book
       as
       select * from book
   go
exec query_book
實例2:加入一筆記錄到表book,并查詢此表中所有書籍的總金額

 

   Create proc insert_book

   @param1 char(10),@param2 varchar(20),@param3 money,@param4 money output

   with encryption   ---------加密

   as

   insert book(編號,書名,價格) Values(@param1,@param2,@param3)
   select @param4=sum(價格) from book
   go

    執(zhí)行例子:

   declare @total_price money
   exec insert_book '003','Delphi 開發(fā)指南',$100,@total_price
   print '總金額為'+convert(varchar,@total_price)
   go

    實例3:設(shè)有兩個表為Product,Order,其表內(nèi)容如下:

       Product
           產(chǎn)品編號       產(chǎn)品名稱    客戶訂數(shù)    
             001             鋼筆         30        
             002             毛筆         50        
             003             鉛筆         100        
       Order  
           產(chǎn)品編號         客戶名     客戶訂金
             001               南山區(qū)       $30
             002               羅湖區(qū)       $50
             003               寶安區(qū)       $4

    請實現(xiàn)按編號為連接條件,將兩個表連接成一個臨時表,該表只含編號.產(chǎn)品名.客戶名.訂金.總金額,
總金額=訂金*訂數(shù),臨時表放在存儲過程中

    代碼如下:

     Create proc temp_sale
     as
       select a.產(chǎn)品編號,a.產(chǎn)品名稱,b.客戶名,b.客戶訂金,a.客戶訂數(shù)* b.客戶訂金 as總金額
       into #temptable from Product a inner join Order b on a.產(chǎn)品編號=b.產(chǎn)品編號
     if   @@error=0
       print 'Good'
     else
       print 'Fail'
     go


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多