最近接觸oracle的東西,剛剛開始學習並同時做點東西,最近老是使用儲存過程。現在通過我個人的使用簡單說下自己的感受!
在設計儲存過程中,一本通過二個方式實現:
1:就是簡單的實現游標
---過程的宣告---
procedure procedure_name
( var_1 in xx1%type,--過程接收引數1,並給出型別
var_2 in xx2%type,--過程接收引數2,並給出型別
...... --宣告過程需要接收的引數,並給出型別
varout out cursor ---宣告乙個變數,為游標的變數,用來返回結果
) is
--------開始------------
begin
-------刪除舊的資料(根據實際情況而定)---------------
delete from table_name
where
----進行插入的操作---------
insert into table_name (x1,x2,.....)
select table_name
from
where
-------開始進行相應的操作--------------
update table_name
set
xx1=(),
xx2=(),
xxn=()
where 條件;
commit;
-----開啟游標----
open varout for
select xx1,
xx2,
xxnfrom
table_name
where 條件;
end;
這種方式是一次完成每個屬性列的值。
下面第二個方式是 一次完成一條記錄
procedure procedure_name
( var1 in 設定相應型別,-----宣告過程需要接收的引數及型別
var2 in 設定相應型別,----宣告過程需要接收的引數及型別
...... ---- 宣告過程需接收的引數及型別
varout out cursor ------宣告乙個游標型別 用來返回資料集合
) is
---------宣告變數用來儲存游標的資料或需要更新的變數---------
var1 型別;
var2 型別;
var3 型別;
----宣告用來儲存游標的變數
cvar1 型別;
cvar2 型別;
---宣告游標----------------------
cursor tc_cursor is
select xxvar
from 表名
where 條件;
begin
-------刪除舊資料-----------
delete from
where 條件;
------開啟游標-------
open tc_cursor ;
fetch tc_cursor
into cvar1,cvar2,....
-------判斷是否還有-----
while tc_cursor%found loop;-----如果游標還有可選的就迴圈
-------進行相應的操作(此處進行的統計計算一些的東西)-----------
select xx
into var1
from
where 條件;
select ***
into var2
from
where 條件;
if(判斷游標裡是否有資料,如果有資料) then
into table_name
values
上面進行更新或統計的資料的一條記錄,插入到相應的表裡
end if;
-------把游標裡的資料放到宣告的變數中-------
fetch tc_var
into cvar1,....;
end loop;---結束迴圈
close tc_cursor; --關閉游標
commit; ---提交上
------開啟過程中的游標返回資料集合--
open varout for
select 需要返回的資料各個屬性
from 表名
where 條件;
end;
這種方法是一條一條記錄的進行操作的。
這是我在學習oracle並使用它 進行 統計更新時候使用的過程,剛開學習,哪有不對 希望大家指正批評!
Numpy中的一點小知識
train set x orig,train set y,test set x orig,test set y,classes load dataset train set x orig 一組 plt.imshow train set x orig index 展示出第index train set...
Android setResult 的一點小問題
在android的activity中,我們經常使用startactivityforresult啟動另外乙個activity,例如從activity a啟動 activity b,那b何時呼叫setresult合適,能不能再finish 之後呼叫?在這裡做一下記錄。直接看下activity的原始碼se...
一點小感悟
今天去了華為的機試,說實話,題目不是很難,但是自己並沒有發揮的很好,只寫出來一題半,第一題非常簡單 兩個兩位數a,b,輸出乙個四位數,將a的十位和個位放到c的十位和百位上,b的十位和個位放到c的個位和千位上,直接轉化為字串拼接一下就行。第二題有點難度 給出1,3,9,27,81,這幾個數,輸入1 1...