萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> oracle的存儲過程指南

oracle的存儲過程指南

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

解釋 output:表示此參數是可傳回的.

with {recompile|encryption}

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

encryption:所創建的存儲過程的內容會被加密

表book的內容如下

  編號  書名              價格
  001   C語言入門          $30
  002   PowerBuilder報表開發  $52

實例1:查詢表Book的內容

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

執行例子:

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

實例3:設有兩個表為Product,Order,其表內容如下:

產品編號    產品名稱  客戶訂數  
      001       鋼筆     30    
      002       毛筆     50    
      003       鉛筆     100    
   Order 
      產品編號     客戶名   客戶訂金
      001       南山區   $30
      002       羅湖區   $50
  003       寶安區   $4

請實現按編號為連接條件,將兩個表連接成一個臨時表,該表只含編號.產品名.客戶名.訂金.總金額,

總金額=訂金*訂數,臨時表放在存儲過程中

代碼如下:

   Create proc temp_sale
   as
    select a.產品編號,a.產品名稱,b.客戶名,b.客戶訂金,a.客戶訂數* b.客戶訂金 as總金額
    into #temptable from Product a inner join Order b on a.產品編號=b.產品編號
  if @@error=0
    print 'Good'
  else
    print 'Fail'
   go
copyright © 萬盛學電腦網 all rights reserved