儲存過程的簡易使用

2021-08-03 03:59:26 字數 2109 閱讀 7068

本文主要介紹,在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 更像是把變化的檔案作快照後,記錄在乙個微型的檔案系統中。每次提交更新時,它會縱覽一遍所有檔案的指紋資訊並對...