sqlserver--存储过程里面调用‘另外的存储过程’
CREATE PROCEDURE [dbo].[proc_CreateSoldOutStock]@FBillNo varchar(50), -- 已售出库单编码@FInterID int output, -- 已售id@Errors varchar(50) output -- 错误
AS
BEGINdeclare @FMultiCheckStatus varchar(20) --//审核流程状态declare @FComboBox varchar(20) --//是否回购declare @RKJS_YWType varchar(20) --//业务类型declare @JSMX_HTH varchar(50) --合同号declare @FDept int --部门IDdeclare @FDept_number varchar(50) --部门declare @RKJS_GYSBH varchar(50) --客户代码declare @RKJS_GYSBH_id int --客户IDdeclare @RKJS_XSRQ datetime --销售日期declare @FBase8 int --币种IDdeclare @RKJS_BZ varchar(20) --RKJS_BZ 币种declare @FText6 varchar(10) --期间declare @FEntry int --行号declare @RKJS_Empt_ID int --业务员IDdeclare @RKJS_Empt varchar(20) --业务员名称
begin trybegin tran set @Errors=''if exists(select * from t_BOS200000002 where FBillNo =@FBillNo)beginset @Errors='单据编号为:'+@FBillNo+'---k3已经存在'returnend
if exists(select * from t_esb_SoldOutStock where RKJS_DJBH=@FBillNo and IsRead=0)begin--获取已售出库的IDdeclare @p2 intexec GetICMaxNum 't_BOS200000002',@p2 outputset @FInterID=@p2select @RKJS_YWType=RKJS_YWType,@JSMX_HTH=JSMX_HTH,@RKJS_GYSBH=RKJS_GYSBH,@RKJS_XSRQ=RKJS_XSRQ,@RKJS_BZ=RKJS_BZ,@RKJS_Empt=RKJS_Empt from t_esb_SoldOutStock where RKJS_DJBH=@FBillNo and IsRead=0set @FMultiCheckStatus='2' --//审核流程状态set @FComboBox='否' --//是否回购--公司 默认进出口 page1JsonObj.put("FText", 0); --部门 根据合同号,截取部门select @FDept_number=substring(@JSMX_HTH,6,2)+'.'+substring(@JSMX_HTH,8,2)+'.'+substring(@JSMX_HTH,10,3)if exists(select top 1 FItemID from t_Department where FNumber =@FDept_number)beginset @FDept=(select top 1 FItemID from t_Department where FNumber =@FDept_number)end--else-- begin-- set @FDept=0-- end--客户if exists(select top 1 FItemID from t_Item where FItemClassID=1 and FNumber =@RKJS_GYSBH)beginset @RKJS_GYSBH_id=(select top 1 FItemID from t_Item where FItemClassID=1 and FNumber =@RKJS_GYSBH)endelsebeginset @Errors ='客户代码为:'+@RKJS_GYSBH+'---k3不存在'rollback tran --回滚returnend--期间 GETDATE()截取---》数据库存在Bug--select @FText6=cast(cast(substring(cast(isnull(@RKJS_XSRQ,GETDATE())as varchar),6,2) as int)as varchar)select @FText6=cast(cast(DATENAME(MONTH,@RKJS_XSRQ) as int)as varchar)select @FBase8=FCurrencyID from t_Currency where FNumber=@RKJS_BZ --币种declare @FDecimal2 decimal(23, 6) --汇率 RKJS_HLv 根据币种,获取汇率,如果是人名币,汇率是1if(@RKJS_BZ='CNY')beginset @FDecimal2=1endelsebeginset @FDecimal2=(select top 1 FExchangeRate from t_Currency where FNumber=@RKJS_BZ)end --业务员select @RKJS_Empt_ID=FID from t_Emp where FName=@RKJS_EmptINSERT INTO t_BOS200000002(FID,FClassTypeID,FBillNo,FMultiCheckStatus,FComboBox,FComboBox1,FText,FBase,FBase1,FBase4,FDate,FBiller,FInteger2,FUser,FDate1,FText6,FText12,FBase8,FBase9,FDecimal2) Values(@FInterID,291790021,@FBillNo,@FMultiCheckStatus,@FComboBox,@RKJS_YWType,'0',@FDept,@RKJS_GYSBH_id,0,@RKJS_XSRQ,16394,0,16394,@RKJS_XSRQ,@FText6,'',@FBase8,ISNULL(@RKJS_Empt_ID,0),@FDecimal2)-----------------------------------------------------------------------------------------declare @JSMX_WLBH_ID int -- 物料IDdeclare @JSMX_WLBH_Name varchar(50)-- 物料代码名称declare @JSMX_BatchNo varchar(50) --VIN/桥序列/批号declare @JSMX_SL decimal(23, 6) --数量declare @JSMX_JSHJ decimal(23, 6) --含税单价 JSMX_JSHJdeclare @JSMX_BGDH varchar(50) --报关单号declare @JSMX_BGDWLMC varchar(50) --报关单物料名称(报关名称)declare @JSMX_YSRQ varchar(500) --应收日期 2020-10-11*2020-10-23*2020-10-31declare @JSMX_SKJE varchar(500) --收款金额 100*200*300declare @JSMX_SKJE_BenWeiBi varchar(500) --收款金额本位币 100*200*300declare @JSMX_HTH_ID int -- 合同号IDdeclare @FBase3 int -- // 单位 FBase3 "辆"declare @FDecimal decimal(8, 2) --税率declare @FPrice1 decimal(23, 6) --不含税单价declare @FAmount3 decimal(23, 6) --不含税金额declare @FAmount5 decimal(23, 6) --不含税金额本位币declare @FAmount decimal(23, 6) --含税金额 JSMX_JSHJ 价税合计原币=含税单价*数量 FAmountdeclare @FAmount6 decimal(23, 6) --含税金额本位币 税合计本位币=含税单价*数量*汇率 @FAmount6declare @FAmount1 decimal(23, 6) --税额=计税合计-金额 @FAmount1declare @FAmount7 decimal(23, 6) --税额本位币=(计税合计-金额)*汇率 @FAmount7set @JSMX_HTH=''set @FEntry=1declare cursor_entry cursor forselect JSMX_WLBH_Name,JSMX_BatchNo,JSMX_SL,JSMX_JSHJ,JSMX_HTH,JSMX_BGDH,JSMX_BGDWLMC,JSMX_YSRQ,JSMX_SKJE from t_esb_SoldOutStock where IsRead=0 and RKJS_DJBH=@FBillNoopen cursor_entry -- 打开游标fetch next from cursor_entry into @JSMX_WLBH_Name,@JSMX_BatchNo,@JSMX_SL,@JSMX_JSHJ,@JSMX_HTH,@JSMX_BGDH,@JSMX_BGDWLMC,@JSMX_YSRQ,@JSMX_SKJEwhile @@fetch_status=0 -- 提取成功,进行下一条数据的提取操作BEGIN--产品代码-FBase2set @JSMX_WLBH_ID=0if exists(select top 1 FNumber from t_ICItem where FName=@JSMX_WLBH_Name)beginset @JSMX_WLBH_ID=(select top 1 FItemID from t_ICItem where FName=@JSMX_WLBH_Name)endelsebeginset @Errors =@Errors+'物料名称为:'+@JSMX_WLBH_Name+'---k3不存在'rollback tran --回滚returnend--// 合同号/合同小号 JSMX_HTH FBase7set @JSMX_HTH_ID=0if exists(select * from t_Item where FItemClassID=3007 and FName =@JSMX_HTH)beginset @JSMX_HTH_ID=(select top 1 FItemID from t_Item where FItemClassID=3007 and FName =@JSMX_HTH)endelsebeginset @Errors =@Errors+'合同号名称为:'+@JSMX_HTH+'---k3不存在'rollback tran --回滚returnend-- // 单位 FBase3 "辆"SELECT top 1 @FBase3=FItemID FROM T_MeasureUnit where FName ='辆'--收款金额原币 FText15 JSMX_SKJE rs7.getString("JSMX_SKJE")--收款金额本币 FText14 如果汇率=1 ==JSMX_SKJE-- 如果汇率<>1set @JSMX_SKJE_BenWeiBi=0if (@RKJS_BZ='CNY') --汇率=1beginset @JSMX_SKJE_BenWeiBi=@JSMX_SKJEendelse beginCREATE TABLE #JSMX_SKJE_BenWeiBi(JSMX_SKJE_BenWeiBi varchar(555))set @JSMX_SKJE_BenWeiBi=''select @FDecimal2 --收款原币金额 汇率 返回本币金额INSERT #JSMX_SKJE_BenWeiBi exec proc_c_SoldOut_Update_Money @JSMX_SKJE,@FDecimal2,@JSMX_SKJE_BenWeiBiSELECT @JSMX_SKJE_BenWeiBi=#JSMX_SKJE_BenWeiBi.JSMX_SKJE_BenWeiBi FROM #JSMX_SKJE_BenWeiBi;DROP TABLE #JSMX_SKJE_BenWeiBi; print @JSMX_SKJE_BenWeiBiend--// 税率 使用合同号区分 "FDecimal"--//SQD内销 ---》‘0.13’ SQZ外销 ( 如果SQZ外销 ‘币种’=‘CNY’ )if(CHARINDEX('SQD',@JSMX_HTH)=1) --存在beginset @FDecimal=0.13endelsebeginset @FDecimal=0end--// "FPrice1" 不含税单价=含税单价/1.13或者不含税单价=含税单价/(1+税率)set @FPrice1=0 set @FPrice1=@JSMX_JSHJ/(1+@FDecimal)-- // 不含税金额 不含税金额原币=不含税单价*数量 FAmount3set @FAmount3=0set @FAmount3=(@JSMX_JSHJ/(1+@FDecimal))*@JSMX_SL--不含税金额本位币 =不含税金额原币*汇率set @FAmount5=0set @FAmount5=@FAmount3*@FDecimal2--// 含税金额 JSMX_JSHJ 价税合计原币=含税单价*数量 FAmountset @FAmount=0set @FAmount= @JSMX_JSHJ*@JSMX_SL--// 含税金额本位币 税合计本位币=含税单价*数量*汇率set @FAmount6=0set @FAmount6=@JSMX_JSHJ*@JSMX_SL*@FDecimal2 --// 税额=计税合计-金额set @FAmount1=0 set @FAmount7=0 if(@FDecimal=0.13)beginset @FAmount1=@FAmount-@FAmount3set @FAmount7=@FAmount1 --税额本位币endelsebeginset @FAmount1=0set @FAmount7=@FAmount1endINSERT INTO t_BOS200000002Entry2(FID,FIndex,FBase2,FText2,FText4,FText7,FBase7,FBase3,FQty,FText15,FText14,FDecimal,FPrice1,FPrice,FAmount3,FAmount5,FAmount,FAmount6,FAmount1,FAmount7,FInteger3,FBase6,FText3,FText9,FText5,FText8,FID_SRC,FEntryID_SRC,FBillNo_SRC,FClassID_SRC,FText10,FText1,FText11,FBase5,FDecimal1,FText13) Values(@FInterID,@FEntry,@JSMX_WLBH_ID,@JSMX_BatchNo,@JSMX_BGDH,@JSMX_BGDWLMC,@JSMX_HTH_ID,@FBase3,@JSMX_SL,@JSMX_SKJE,@JSMX_SKJE_BenWeiBi,@FDecimal,@FPrice1,@JSMX_JSHJ,@FAmount3,@FAmount5,@FAmount,@FAmount6,@FAmount1,@FAmount7,0,0,'','','','',0,0,'',0,'','','',0,0,@JSMX_YSRQ)set @FEntry=@FEntry+1fetch next from cursor_entry into @JSMX_WLBH_Name,@JSMX_BatchNo,@JSMX_SL,@JSMX_JSHJ,@JSMX_HTH,@JSMX_BGDH,@JSMX_BGDWLMC,@JSMX_YSRQ,@JSMX_SKJEENDclose cursor_entry -- 关闭游标deallocate cursor_entry -- 释放游标
------------------------------------------------------------------------------endcommit tranend trybegin catchset @Errors= ERROR_MESSAGE() --错误的完整信息IF @@TRANCOUNT > 0 --判断有没有事务BEGINrollback tranendend catchselect @FInterID select @Errors
END
获取存储过程最后select返回的结果集。SELECT 数据集返回值。
因为select返回的结果是一个表。所以返回的结果需要用一个表接收。使用临时表接收。
被调用的存储过程最后是这样:返回了一个空标题的字段。
思路:基本思路是先创建一个临时表,通过INSERT ... EXEC ...语句将存储过程的返回结果保存到临时表中,接下来就可以像处理普通数据表那样对待这个临时表了。
修改:用临时表接收返回结果集,把临时表的相关字段赋值给变量。
sqlserver--存储过程里面调用‘另外的存储过程’相关推荐
- server使用abp中调用存储过程 sql_ASP调用sql server 存储过程详解-附带实例-
ado文档对使用指定属性创建新的 Parameter 对象. 语法 Set parameter = command.CreateParameter (Name, Type, Direction, Si ...
- shell 调用mysql 存储过程_shell调用mysql的存储过程以及SQL
在华为的时候,还短暂接触和写过shell,调用oracle,后来转入java之后,比较少接触shell,一转眼回过头又要摸shell,去处理mysql,留一点笔记,以备后用. #!/bin/sh #t ...
- 存储过程里调用另一个存储过程的值
第一种: USE [WMS] GO DECLARE @return_value int EXEC @return_value = [dbo].[Sys_GetSysNo] @NoCode = N' ...
- SQL存储过程来调用webservice
如果用存储过程来调用webservice 那存储过程的功能感觉能做好多事情了? 别自欺欺人了.那些功能还是webservice来实现的... 完整的webservice代码:(也是默认的,新建.asm ...
- SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)...
存储过程有三种返回: 1. 用return返回数字型数据 2. 用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行) 3. 直接在存储过程中用select返回结果集,可 ...
- sqlserver调用mysql存储过程_sqlserver调用存储过程
1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列.不带参数的 call 转义序列的语法如下所示: {call procedure-nam ...
- 网络工作室暑假后第二次培训资料(SQLServer存储过程和ADO.NET访问存储过程)整理(一)...
因为昨天我的SQL Server 2008数据库在使用的时候突然就打不开了.而起前天还用它来写T-SQL语句来着.所以很是郁闷啊,到网上查询以后,不能解决,就干脆重新安装了一边,所以昨天整理的内容不能 ...
- oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
- oracle数据块调用存储过程,VC调用存储过程的通用方法(ORACLE篇)
先对上一篇调用SQLServer的存储过程作一点补充,就是如果存储过程里有Insert,update,delete等操作,最后返回结果集,按示例代码有可能得不到数据,因为返回的数据有可能不在第一个结果 ...
- hql调用mysql存储过程_hibernate调用mysql存储过程
在mysql中创建两个存储过程,如下: 1.根据id查找某条数据: 1 CREATE PROCEDURE `findEmpById`(IN id INTEGER(11))2 begin3 s ...
最新文章
- 测一测你的blog魔症有多严重
- 纯css3鼠标经过出现文字或图片鼠标移走消失
- 软件测试2019:第四次作业
- nodejs+express +jade模板引擎 新建项目
- Effective C++笔记_条款31将文件间的编译依存关系降至最低
- 第四范式陈雨强:做机器学习平台天然就是新基建丨新基建50人
- 将android中如何调整Toast位置?
- 临牌过期保险能理赔吗?
- 【CVTE Web后台开发实习生 线下面试】总结
- 2021-08-08三大范式与JDBC
- DialogBox和DialogBoxParam函数
- 用英语推销计算机设备,销售电脑的英语对话
- ACL2019之对话系统
- 中基鸿业如何投资理财
- web服务器和app服务器
- 找到100亿个URL中重复的URL
- linux 终端窗口最大化,如何设置终端打开最大化
- 关于图像opencv中对于长宽的定义
- Sketch for mac(矢量绘图UI设计软件)91中文最新版
- Eclipse里exadel studio pro与其他工具的冲突