如何在儲存過程中實現插入更新資料

2021-09-30 21:48:00 字數 1586 閱讀 8719

儲存過程的功能非常強大,在某種程度上甚至可以替代業務邏輯層,接下來就乙個小例子來說明,用儲存過程插入或更新語句。

1、資料庫表結構

所用資料庫為sql server2008。

2、建立儲存過程

(1)實現功能:

有相同的資料,直接返回(返回值:0);

有主鍵相同,但是資料不同的資料,進行更新處理(返回值:2);

沒有資料,進行插入資料處理(返回值:1)。

根據不同的情況設定儲存過程的返回值,呼叫儲存過程的時候,根據不同的返回值,進行相關的處理。

(2)下面編碼只是實現的基本的功能,具體的sql**如下:

create proc sp_insert_student

@no char(10), 

@name varchar(20),

@*** char(2),

@age int,

@rtn int output

as

declare

@tmpname varchar(20), 

@tmp*** char(2),

@tmpage int

if exists(select * from student where no=@no)

begin

select @tmpname=name,@tmp***=***,@tmpage=age from student where no=@no

if ((@tmpname=@name) and (@tmp***=@***) and (@tmpage=@age))

begin

set @rtn=0 --有相同的資料,直接返回值

end

else

begin

update student set name=@name,***=@***,age=@age where no=@no

set @rtn=2 --有主鍵相同的資料,進行更新處理

end

end

else

begin

insert into student values(@no,@name,@***,@age)

set @rtn=1 --沒有相同的資料,進行插入處理

end

3、呼叫儲存過程

這裡在sql server環境中簡單的實現了呼叫,在程式中呼叫也很方便。

具體的**如下:

declare @rtn int

exec sp_insert_student '1101','張三','男',23,@rtn output

if @rtn=0

print '已經存在相同的。'
else if @rtn=1

print '插入成功。'
else

print '更新成功'
乙個儲存過程就實現了3中情況,而且效率很高,使用靈活。希望對大家有所幫助。

在成長學習的過程中,我會不斷發一些自己的心得體會,和大家共享。

如何在儲存過程中執行DTS包

資料轉換服務 dts 在管理和開發的多種領域都有會涉及 dts 資料倉儲 將資料從原始的處理系統和 中提取出來以供報表使用 建立olap 將大量資料從文字檔案或其它非資料庫格式的檔案中拷貝到資料庫 生成microsoftoffice文件報表 使用distributedtransactioncoord...

mysql如何在儲存過程中搜尋表名

源系統開發了很多的儲存過程,現在想在所有儲存過程中搜尋某張表名,怎麼實現?centos7.5 mysql5.6.46 1 將所有過程儲存匯出成檔案,在檔案裡進行搜尋 2 通過show create procedure方式將輸出內容輸出到乙個檔案 3 直接查詢information schema資料庫...

儲存過程中如何在out引數中訪問游標。

由於oracle儲存過程中所有返回值是通過out引數代替的,但是集合不能用一般的引數,必須使用package,所以分兩部分 第一步 定義乙個包頭 create or replace package mypackage is 宣告乙個游標 type empcursor is ref cursor pr...