博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
根据表生成流水号
阅读量:6983 次
发布时间:2019-06-27

本文共 3963 字,大约阅读时间需要 13 分钟。

CREATE TABLE [dbo].[TableWater](    [Tb_id] [int] IDENTITY(1,1) NOT NULL,    [Vc_table_name] [nvarchar](90) NULL,    [Num_water_no] [varchar](100) NULL, CONSTRAINT [PK_TableWater] PRIMARY KEY CLUSTERED (    [Tb_id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]

测试表

测试参数

DECLARE @return_value int,   @vmax_waterno bigint

EXEC @return_value = [dbo].[get_waterno]   @vtableName = N'testtable',   @vcnt = 1,   @vmax_waterno = @vmax_waterno OUTPUT

SELECT @vmax_waterno as N'@vmax_waterno'

SELECT 'Return Value' = @return_value

SQL Server 实现:

create PROCEDURE [dbo].[get_waterno] (@vtableName   VARCHAR(90), --表名@vcnt         INT ,--流水号@vmax_waterno    bigint  output --最大流水号)asBEGIN   declare @Vcount int;   set  @vmax_waterno=0;        SELECT  @Vcount=count(1)  FROM TableWater WHERE vc_table_name=@vtableName ;   IF (@Vcount= 0 or @Vcount is null)          BEGIN            INSERT INTO TableWater(vc_table_name,num_water_no) VALUES(@vtableName, @vcnt );    set  @vmax_waterno=@vcnt;      --return;           END;     ELSE    BEGIN        DECLARE @i bigint;                set @i= 1;        WHILE (@i<= 1000)          begin               UPDATE TableWater SET num_water_no=num_water_no+@vcnt            WHERE vc_table_name =@vtableName ;               IF (@Vcount > 0 )      BEGIN      SELECT  @vmax_waterno=num_water_no FROM TableWater WHERE vc_table_name=@vtableName;     -- return ;     break;     end;    ELSE         BEGIN        set @i= @i + 1;        SELECT   @vmax_waterno=num_water_no FROM TableWater WHERE vc_table_name=@vtableName and num_water_no=@vmax_waterno ;        set @vmax_waterno= NULL;                  --return ;      break;      end;     end;    end;   end;

SQL 调用

---调用存储过程   生成结果表流水号             exec  get_waterno "testtable",1,@p_tmp_water_num output;         set @p_tmp_water_str= replicate('0',10)+ltrim (@p_tmp_water_num);

 

 

 

Oracle 实现:

PROCEDURE spr_get_waterno     (       vtableName IN  VARCHAR2, --表名   vcnt       IN  INT ,--流水号   vmax_waterno OUT  number --最大流水号        )    is  Vcount int;   BEGIN     vmax_waterno:= 0;         SELECT count(1) into Vcount FROM TableWater WHERE vc_table_name = vtableName ;        IF (Vcount= 0 or Vcount is null)       THEN    BEGIN                  INSERT INTO TableWater(vc_table_name,num_water_no) VALUES(vtableName, vcnt );           vmax_waterno:= vcnt;           --select max_waterno          return;-- max_waterno;          commit;    END;    ELSE    BEGIN          DECLARE i INTEGER;          begin           i:= 1;          WHILE  i<= 1000              loop              UPDATE TableWater  SET num_water_no = num_water_no + vcnt                      WHERE vc_table_name = vtableName  ;-- and num_water_no  = max_waterno;              commit;              IF (Vcount > 0 )                                THEN              BEGIN                  SELECT num_water_no INTO vmax_waterno FROM TableWater WHERE vc_table_name = vtableName;                  -- SET max_waterno = max_waterno + cnt;                  -- select max_waterno;                 return ;                              END ;              ELSE              BEGIN                   i:= i + 1;                -------------------------------------------------------------------------------                  SELECT num_water_no INTO vmax_waterno FROM TableWater WHERE vc_table_name = vtableName and vmax_waterno = num_water_no ;                ------------------------------------------------------------------------                vmax_waterno:= NULL;                 --select max_waterno;                  return ;                               END;              END IF;           END  loop;           vmax_waterno:= NULL;           return;    END;    end;    END IF;      COMMIT;        END;

 oracle 调用

---调用存储过程   生成结果表流水号      spr_get_waterno('testtable',1,p_tmp_water_num);           p_tmp_water_str:= LPAD(p_tmp_water_num,20,'0');

 

转载地址:http://rgvpl.baihongyu.com/

你可能感兴趣的文章
被忽视但很实用的那部分SQL
查看>>
解读阿里云oss-android/ios-sdk 断点续传(多线程)
查看>>
ML之监督学习算法之分类算法一 ——— 决策树算法
查看>>
骡夫电商地址
查看>>
亚信安全火力全开猎捕“坏兔子”,全歼详解
查看>>
智能家居——IoT零基础入门篇
查看>>
《Linux From Scratch》第一部分:介绍 第一章:介绍-1.3. 更新日志
查看>>
阿里将在雄安新区设3家子公司:涉AI、蚂蚁金服和菜鸟;北航设立全国首个人工智能专业,与百度合作办学...
查看>>
Powershell指令集_2
查看>>
归并排序算法
查看>>
北京第一个公共云计算平台即将诞生
查看>>
5G频谱相争“兵戎相见”各相部署风起云涌
查看>>
云计算从“仰望星空”到“脚踏实地”
查看>>
台积电要造第一款7nm芯片 明年下半年可投产
查看>>
《逻辑与计算机设计基础(原书第5版)》——3.9 二进制加法器
查看>>
《中国人工智能学会通讯》——8.25 基于演化优化的生物网络配准
查看>>
飞鹤乳业CIO:移动化让企业品牌和消费者紧密连接
查看>>
教你编写Node.js中间件,实现服务端缓存
查看>>
美国税局再遭攻击:原是偷来的社会安全号码作祟
查看>>
2020年全球云服务规模将达3900亿美元
查看>>