带参数和游标的存储过程

 1 USE [ChinaMDM]
 2 GO
 3 /****** Object:  StoredProcedure [dbo].[MDMTools_SequenceContainsMoreThanOneEement_Dispose_Material]    Script Date: 2016/6/28 10:01:42 ******/
 4 SET ANSI_NULLS ON
 5 GO
 6 SET QUOTED_IDENTIFIER ON
 7 GO
 8 ALTER PROCEDURE [dbo].[MDMTools_SequenceContainsMoreThanOneEement_Dispose_Material]
 9  @MaterialCode Nvarchar(50)
10 as
11 BEGIN
12     declare @Materialid int;
13     declare @Unitid int;
14     declare @Message Nvarchar(max);
15     set xact_abort on
16
17     begin tran
18     set @Message=‘‘
19     declare _cur cursor for
20     select  id  from Materialheaders where code=@MaterialCode and isactive=1
21     open _cur
22     fetch next from  _cur into @Materialid
23     while @@fetch_status=0
24         begin
25             begin try
26                 select @Unitid=id from MaterialMeasuringUnits where  AlternativeUoMId = ( select AlternativeUoMId  from MaterialMeasuringUnits where materialheaderid=@Materialid group by AlternativeUoMId  having count(AlternativeUoMId)>1  )  and  materialheaderid=@Materialid  and  (IsEAN  =0 or IsEAN is null)
27
28                 update MaterialMeasuringUnits set AlternativeUoMId=1 where id=@Unitid
29
30                 if (@Unitid is null)
31                     begin
32                         select @Message=N‘@Unitid为空‘
33                     end
34                 else
35                     begin
36                         select @Message=N‘执行成功:物料代码: ‘+@MaterialCode+N‘ 物料测量单位表ID: ‘+convert (nvarchar,@Unitid)
37                     end
38
39                 print @Message
40             end try
41             begin catch
42                 select @Message= ERROR_MESSAGE()
43                 print @Message
44                 rollback tran
45                 close _cur
46                 deallocate _cur
47                 return
48             end catch
49
50             fetch next from  _cur into @Materialid
51         end
52
53             close _cur
54            deallocate _cur
55
56     commit tran
57 END
时间: 2024-11-08 09:48:06

带参数和游标的存储过程的相关文章

在PL/SQL中使用带参数的游标

需求:查询并输出部门名称为SALES的员工信息 1 SET serveroutput ON; 2 DECLARE 3 CURSOR c_emp(paramName VARCHAR2) IS 4 SELECT * FROM emp WHERE deptno = (select deptno from dept where dname = paramName); 5 BEGIN 6 FOR e IN c_emp('SALES')loop 7 dbms_output.put_line(e.empno|

带参数的游标案例

原文地址:https://www.cnblogs.com/niwotaxuexiba/p/10170985.html

带参数的存储过程

创建带参数的sql存储过程:创建带参数的存储过程首先要在存储过程中声明该参数,每个存储过程参数都必须用惟一的名称进行定义.与标准的Transact-SQL变量相同,参数名必须以@为前缀,创建带参数的存储过程创建带参数的存储过程首先要在存储过程中声明该参数,每个存储过程参数都必须用惟一的名称进行定义.与标准的Transact-SQL变量相同,参数名必须以@为前缀,并且遵从对象标识符规则.当用户不提供该参数的值时可以使用一个默认值来代替.在执行带参数的存储过程时,既可以通过显式指定参数名称并赋予适当

oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

  PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是为了补充SQL语言的,是带有了分支和循环的语言. PL/SQL 语法 基本数据类型声明 declare v_name varchar2(20); v_temp number(1); v_count binary_integer := 0; v_sal number(7,2) := 4000.00

Oracle游标--cursor_01-简单不带参数实现功能

对于游标这个概念,可以理解为类似我们以前学习的jdbc的结果集对象, 我们可以使用游标对结果集从上到下进行遍历,获取每一行内容 首先我们要分析一下游标的分类 带参数的 书写函数的整体架构 定义游标 开启游标 关闭游标 不带参数 举个栗子:查询oracle数据库emp表的所有员工的姓名和工资 --开启远程访问 set serveroutput on; declare -- 变量声明 cursor cemp is select from ename,esal from emp; cename emp

c#调用Mysql带参数的存储过程

1.首先创建一个带参数的存储过程 ①存储过程名称=proc_bookinfo  ②存储过程2个参数 一个in 一个out in参数名称=ispay out参数名称=unPaycount ③ 这个存储过程 根据传入的未支付字段名称 输出未支付的商品数量 DELIMITER $$ USE `bookshop`$$ DROP PROCEDURE IF EXISTS `proc_bookinfo`$$ CREATE DEFINER=``@`` PROCEDURE `proc_bookinfo`(IN i

Oracle游标带参数

Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * from d where id=c_id; begin open b(111); end;

T-SQL 带参数存储过程

创建带参数的存储过程 1 use StudentManager 2 go 3 if exists(select * from sysobjects where name='usp_ScoreQuery4') 4 drop procedure usp_ScoreQuery4 5 go 6 create procedure usp_ScoreQuery4 --创建带参数的存储过程 7 @AbsentCount int output,--缺考总人数 8 @FailedCount int output,

oracle存储过程(带参数的存储过程)

带参数的存储过程 举例:为指定的员工涨100元的工资,打印涨前和涨后的工资 如果带参,需要指定是输入参数还是输出参数 create or replace procedure raisesalary(eno in number) as ---定义一个变量保存涨前的薪水,引用emp中sal的类型作为psal的类型 psal emp.sal%type; begin ---得到员工涨前的薪水 select sal into psal from emp where empno=eno; ---给该员工涨1