首页 > 代码库 > 1-0SBO学习心得(存储过程理论)

1-0SBO学习心得(存储过程理论)

一、原理:系统中每张单据在进行新增(A)、删除(D)、修改(U)、关闭(L)、取消(C)时都会触发数据库相应业务数据的更新,更新数据但不立刻commit,更新完数据后会先触发一个名为SBO_SP_TransactionNotification的存储过程,存储过程返回名为@error的参数,取1或者0。当返回0时表示正常,系统继续commit操作;当返回1时表示不正常,数据库回滚,操作无效。

该存储过程代码如下:

USE [DFKJ_TEST]GO/****** Object:  StoredProcedure [dbo].[SBO_SP_TransactionNotification]    Script Date: 06/28/2014 12:20:57 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc [dbo].[SBO_SP_TransactionNotification] @object_type nvarchar(20),                 -- SBO Object Type@transaction_type nchar(1),            -- [A]dd, [U]pdate, [D]elete, [C]ancel, C[L]ose@num_of_cols_in_key int,@list_of_key_cols_tab_del nvarchar(255),@list_of_cols_val_tab_del nvarchar(255)ASbegin-- Return valuesdeclare @error  int                -- Result (0 for no error)declare @error_message nvarchar (200)         -- Error string to be displayedselect @error = 0select @error_message = NOk----------------------------------------------------------------------------------------------------------------------------------    ADD    YOUR    CODE    HERE---------------------------------------------------------------------------------------------------------------------------------- Select the return valuesselect @error, @error_messageEND
服务器会给这个存储过程传5个参数,分别是:
@object_type nvarchar(20), --操作的单据编号@transaction_type nchar(1),--操作类型 [A]dd, [U]pdate, [D]elete, [C]ancel, C[L]ose@num_of_cols_in_key int,   --待操作数据表的主键个数@list_of_key_cols_tab_del nvarchar(255),--主键名称,如果有多个主键,以“;”分割@list_of_cols_val_tab_del nvarchar(255) --主键值,以“;”分割。
这是在这个存储过程中我们唯一能抓到的参数,控制逻辑就要运用到这些参数。
读代码可以发现默认情况下@error的取值是0,我们可以在这个位置加入代码来进行相应的控制。