一个存储过程实现增删操作 (一个存储过程是一个事务吗)

教程大全 2025-07-12 10:59:35 浏览

–存储过程的功能:对表 UBS_CAS_PriceFormBatch 进行添加、更新、删除、获取操作。–参数说明:

/*@DataAction 添加更新删除的标志位@ID ID@BatchNo (‘批次号’)@ItemClassID 分类@PurchaserUID 分类@AuditorUID 批准人@CheckerUID 审核者@PubDate 拟制时间@CheckDate 审核时间@PassDate 批准时间@State 表单状态@FormType 表单类型@SupplierCode 供应商代码@CompanyType 厂别@InputModelMaterial 输入成本模型的物料@Purchaser@Auditor@Checker@RejectReason*/Create PROCEDURE UBS_CAS_PriceFormBatchAction@DataAction int,@ID int = 0,@BatchNo varchar(50),@ItemClassID int,@PurchaserUID int,@AuditorUID int,@CheckerUID int,@PubDate datetime,@CheckDate datetime,@PassDate datetime,@State int,@FormType int,@SupplierCode varchar(50),@CompanyType int,@InputModelMaterial varchar(50),@Purchaser varchar(50),@Auditor varchar(50),@Checker varchar(50),@RejectReason varchar(500)ASbegin tranSET NOCOUNT ONif @DataAction=0begininsert into UBS_CAS_PriceFormBatch([BatchNo],[ItemClassID],[PurchaserUID],[AuditorUID],[CheckerUID],[PubDate],[CheckDate],[PassDate],[State],[FormType],[SupplierCode],[CompanyType],[InputModelMaterial],[Purchaser],[Auditor],[Checker],[RejectReason])values(@BatchNo,@ItemClassID,@PurchaserUID,@AuditorUID,@CheckerUID,@PubDate,@CheckDate,@PassDate,@State,@FormType,@SupplierCode,@CompanyType,@InputModelMaterial,@Purchaser,@Auditor,@Checker,@RejectReason)set@ID=scope_identity()endif @DataAction=1beginUpdate [UBS_CAS_PriceFormBatch] SET[BatchNo] = @BatchNo,[ItemClassID] = @ItemClassID,[PurchaserUID] = @PurchaserUID,[AuditorUID] = @AuditorUID,[CheckerUID] = @CheckerUID,[PubDate] = @PubDate,[CheckDate] = @CheckDate,[PassDate] = @PassDate,[State] = @State,[FormType] = @FormType,[SupplierCode] = @SupplierCode,[CompanyType] = @CompanyType,[InputModelMaterial] = @InputModelMaterial,[Purchaser] = @Purchaser,[Auditor] = @Auditor,[Checker] = @Checker,[RejectReason] = @RejectReasonWhere[ID] = @IDendif @DataAction=2begindelete from [UBS_CAS_PriceFormBatch] where [ID] = @IDendif @DataAction=3beginselect[BatchNo],[ItemClassID],[PurchaserUID],[AuditorUID],[CheckerUID],[PubDate],[CheckDate],[PassDate],[State],[FormType],[SupplierCode],[CompanyType],[InputModelMaterial],[Purchaser],[Auditor],[Checker],[RejectReason],from [UBS_CAS_PriceFormBatch]where[ID] = @IDendif @@error<>0 goto sqlerrcommit tranreturnsqlerr:rollbackSET NOCOUNT OFFGO

上文中的内容主要是以代码的形式展现出来的,对于刚入门的初学者可能比较难理解,希望大家都能很好的掌握这些知识,为大家以后工作带来方便。

【编辑推荐】


oracle存储过程怎么写?

一、无参程序过程语法create or replace procedure NoParProas;begin;exception //存储过程异常 ;end;二、带参存储过程实例create or replace procedure queryempname(sfindno %type) assName %type;sjob %type; ;三、 带参数存储过程含赋值方式 create or replace procedure runbypARMeters(isal in %type,sname out varchar,sjob in out varchar)as icount number; beginselect count(*) into icount from emp where sal>isal and job=sjob; if icount=1 if; exceptionwhen too_many_rows then DBMS__LINE(返回值多于1行);when others thenDBMS__LINE(在RUNBYPARMETERS过程中出错!); end;在Oracle中对存储过程的调用 过程调用方式一 declare realsal %type; realname varchar(40); realjob varchar(40); begin //存储过程调用开始 realsal:=1100; realname:=;realjob:=CLERK;runbyparmeters(realsal,realname,realjob); --必须按顺序DBMS__LINE(REALNAME|| ||REALJOB); END;//过程调用结束过程调用方式二 declare realsal %type; realname varchar(40); realjob varchar(40); begin//过程调用开始 realsal:=1100; realname:=;realjob:=CLERK;runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob);--指定值对应变量顺序可变DBMS__LINE(REALNAME|| ||REALJOB);END;//过程调用结束给你参考一下,希望对你有所帮助祝你好运

sql中 return 与output 的区别

共同点:都返回值(但return只能返回int类型)不同点:1. output是定义变量是不是可以返回值2. output没有return从查询或过程中无条件退出的工功3. return返回值在函数和过程定义时不需要用output来定义

一个存储过程是一个事务吗

Oracle函数 和 Oracle存储过程的区别

函数和存储过程的区别从参数的返回情况来看:如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数;从调用情况来看:如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题,你可以参考《ORACLE 9I PL\SQL程序设计》(机械工业出版社);如果是在过程化语句中调用的话,就要看你要实现什么样的功能。 函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等),所以虽然他们的语法上很相似但用户在使用他们的时候所需要完成的功能大部分情况下是不同的。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐