本文主要介紹,在oracle中,對儲存過程的使用。
假設目前有需求如下:
1.根據傳入的兩個引數判斷,是執行插入還是更新操作
2.p1對應列idcolumnname1為id主鍵,p2對應列columnname2
3.
查詢主鍵idcolumnname1的值為p1的記錄
當該記錄中欄位columnname2值為null時,對該記錄做更新操作,將值p2更新至該記錄的columnname2欄位
當該記錄中欄位columnname2值不為null時,複製該條記錄(即做insert操作,插入的值即為原記錄,id自增長或取序列號),之後再把值p2更新至新記錄的columnname2欄位
1.建立儲存過程
create
or replace procedure
dbname.procedurename
( p1 in tablename.idcolumnname1%type,
p2 in tablename.columnname2%type)
字面意思:建立或者替換資料庫例項中,名為procedurename的儲存過程,輸入變數
p1對應了idcolumnname1,
p2對應了columnname2
2.定義執行中的變數
as v1 varchar2(30);
v2 integer;
v3 integer;
3.執行體
//1.賦值給v2
begin
select
count(*) into v2
from
tablename
where
columnname2 is
notnull
and idcolumnname1=p1 dbms_output.put_line(v2);
//2.控制台可列印v2看看
dbms_output.put_line(v_count);
//3.判斷做什麼操作
if
v_2=1
then
v_1:='新增';
select
seq_tablename.nextval into v3
from
dual;
//插入一條資料,與原資料一模一樣
insert
into tmp_rules_t_moni_170626(....)
select
....
where
idcolumnname1=p1 and columnname2=p2;
//更新這條新資料,把我們的輸入的p2更新進去
update tablename
set t1.idcolumnname1=p2 where idcolumnname1=v3;
elsif
v_2=0
then
v_1:='更新';
//更新操作
。。。此處省略乙個更新語句。。。。。。。。。
endif; //不要忘記提交
commit;
//異常捕捉
exception
when others then
rollback;
//儲存過程結束
end dbname.procedurename;
4.總結
因為需要用到,就臨時學習了一下儲存過程,算是掌握了基本的使用,本文只是根據需求的介紹了一下思路以及簡要語法,儲存過程的使用,要想徹底掌握,還得多多的去看文件。
JSONCPP 簡易使用
1 編譯jsoncpp mkdir usr jsoncpp cp r include usr jsoncpp cp r libs usr jsoncpp 2 jsoncpp簡單例項 1 反序列化json物件 比如乙個json物件的字串序列如下,其中 array 表示json物件中的陣列 那怎麼分別取...
hydra 簡易使用
暴力破解用的協議 rdp 個人筆記,邊使用hydra邊做,準確性無保障。安裝kali系統 安裝的kali linux 64 bit installer 版本2020.4 1.具體位置 2.hydra和hydra gtk hydra 點開直接是命令列介面,相當於直接使用命令列執行。可以直接開終端,使用...
git簡易使用
git是分布式版本控制系統,和其他版本控制系統的主要差別在於git 只關心檔案資料的整體是否發生變化,而大多數其他系統則只關心檔案內容的具體差異。git 並不儲存這些前後變化的差異資料。git 更像是把變化的檔案作快照後,記錄在乙個微型的檔案系統中。每次提交更新時,它會縱覽一遍所有檔案的指紋資訊並對...