1-1SBO学习心得(存储过程应用)

SBO_SP_TransactionNotification这个存储过程主要应用于页面操作(数据库操作)的放行和阻止。当返回0时放行(commit),当返回1时阻止(回滚)。

--    ADD    YOUR    CODE    HERE
if @object_type=‘22‘ and @transaction_type in (‘A‘,‘U‘)
    /*开始-判定是否超过价格清单中的价格*/

    BEGIN
    declare @visorder nvarchar
        set @visorder=(select top 1 T1.visorder+1 from --查找行号
                        OPOR T0  INNER JOIN POR1 T1 ON T0.DocEntry = T1.DocEntry --订单主表和从表关联
                        where (T1.DocEntry=@list_of_cols_val_tab_del) --条件1,从表主键等于传进来的主键值
                        AND ISNULL(T0.U_owtm,-1)<>1 --条件2,非审批提交
                        and (T1.INMPRICE+T1.LineVat/T1.Quantity --条件3,税后价格
                        >ISNULL((select T2.Price from ITM1 T2 where T2.PriceList=(SELECT TOP 1 T3.ListNum FROM dbo.OCRD T3 WHERE T3.CardCode=T0.CardCode) and T1.ItemCode=T2.ItemCode),0))--价格清单中的价格    

                    )
        if @visorder is not null --如果不为空证明存在这种数据,返回行号
        begin
            select @error=1
            select @error_message=N‘第‘+@visorder+N‘行物料的价格超过允许的范围‘
        end
    end
    /*结束-判断是否超过价格清单中的价格*/

我们在add your code here部分加入此段代码可以实现如下功能:如果采购订单中任何一行物料的价格高于为供应商预设的价格,则阻止并报错。

其中 if @object_type=‘22‘ and @transaction_type in (‘A‘,‘U‘)用作判断(1)操作来自于哪个数据对象,22代表采购订单;(2)是何种操作,A和U代码新增或更新。也就是说,当对采购订单进行更新或新增操作时会触发下面的代码。SQL逻辑:将采购订单主表和从表关联,取出从表中的行号。当行号不为空证明超价格限制的行,报错;为空证明无此类行,通过。        条件1:找到被操作的采购订单记录;     条件2:非审批状态;     条件3:物料行的税后价格大于供应商预设的价格。错误信息:向S001供应商购买A0001物料,预设价格未10RMB,订单上填写的税后价格未11.7元,阻止。

1-1SBO学习心得(存储过程应用)

时间: 2024-08-27 19:30:47

1-1SBO学习心得(存储过程应用)的相关文章

我的MYSQL学习心得(十) 自定义存储过程和函数

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(十三) 权限管理 我的MYSQL学习

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

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

3-0SBO学习心得(格式化搜索和存储过程的综合应用)

功能: (1)采购订单中每行的物料税后折后价格均不能高于为供应商预设的价格,否则报错. 实现:存储过程 (2)例外情况,如货源紧张可能出现超价格采购,此种情况可通过审批来跳过(1)的控制.(让存储过程失效) 实现:加入一个自定义字段(1:送审:-1不送审).存储过程发现此字段取值为1表明为例外采购,即将送领导审批:取值为-1则表示不是例外采购,控制启动. (3)判断自定义字段的值,如果1就触发领导审批,-1不触发领导审批. 实现:格式化搜索可以抓到此字段的值,然后在查询向导中写逻辑.如果1返回t

我的MYSQL学习心得(十二)

原文:我的MYSQL学习心得(十二) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十一) 这一篇<我的MYSQL学习心得(二)>将会讲解MYSQL的触发器 触发器是一个特殊的存储过程,不

我的MYSQL学习心得(十)

原文:我的MYSQL学习心得(十) 我的MYSQL学习心得(十) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(十二) 这一篇<我的MYSQL学习心得(十)>将会讲解MYSQL的存储过程和函数 MYSQL中创建存储过程

我的MYSQL学习心得

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(十二) 触发器 我的MY

MYSQL学习心得

转载:http://www.cnblogs.com/lyhabc/p/3691555.html 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过

我的MYSQL学习心得(十五) 日志

原文:我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的

我的MYSQL学习心得(十四) 备份和恢复

原文:我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程