1. 程式人生 > >sql server儲存過程迴圈呼叫

sql server儲存過程迴圈呼叫

ALTER PROCEDURE [dbo].[OMS_DISCOUNT_SHARING_PRO]
  @lypt AS VARCHAR(10) 
AS
DECLARE @orderStatus VARCHAR(10);
DECLARE @orderlypt VARCHAR(10);
DECLARE @orderEndStatus VARCHAR(10);
DECLARE @orderHeadId VARCHAR(10);
DECLARE @orderHeadSpje DECIMAL(18,2);
DECLARE @orderLineJe DECIMAL(18,2);
DECLARE @orderLineId VARCHAR(10);
DECLARE @orderLineSl INT;
DECLARE @mxhlx VARCHAR(10);
DECLARE @yf DECIMAL(18,2);
BEGIN
    --獲取訂單初始狀態
    SELECT @orderStatus =
 (SELECT
    m.id 
FROM
tb_shujuzd l,
tb_shujuzd m
WHERE
l.id = m.parentid
AND m.code = 'NEW'
AND
l.code = 'OM_ORDER_STATUS'
AND l.parentid = '1')


    --訂單明細行型別id
    SELECT @mxhlx =
 (SELECT
    m.id 
FROM
tb_shujuzd l,
tb_shujuzd m
WHERE
l.id = m.parentid
AND m.code = 'FREIGHT'
AND
l.code = 'ORDER_LINE_DETAIL_TYPE'
AND l.parentid = '1') 


   --獲取訂單結束狀態
    SELECT @orderEndStatus =
 (SELECT
    m.id 
FROM
tb_shujuzd l,
tb_shujuzd m
WHERE
l.id = m.parentid
AND m.code = 'DISTRIBUTED'
AND
l.code = 'OM_ORDER_STATUS'
AND l.parentid = '1')




    --獲取來源平臺
    SELECT @orderlypt =
 (SELECT
l.id
FROM
tb_shujuzdlx
h,
tb_shujuzd l
WHERE
h.code = 'EB_PLATFORM'
AND h.id = l.lx
AND l.parentid
= 0
and
[email protected]
)




  --如果來源店鋪為天貓 
  IF @lypt = 'TM'
  Begin 
    
    --獲取天貓訂單頭的運費資料
    DECLARE orderHead CURSOR LOCAL SCROLL FOR
    select t.yf,t.id,t.spje from tb_ddgl_xiaoshouddt t where [email protected] and t.ddzt = @orderStatus
    OPEN orderHead
    FETCH NEXT FROM orderHead INTO @yf,@orderHeadId,@orderHeadSpje
    WHILE @@FETCH_STATUS = 0
    BEGIN
       PRINT @yf
       if @yf = 0
          BEGIN
               PRINT 'ling'  
               update tb_ddgl_xiaoshouddt set
[email protected]
where [email protected]
               update tb_ddgl_xiaoshouddh set yfje=0, dwyf=0 where [email protected]
          END 
       else 
          BEGIN
               PRINT 'feiling'
               DECLARE orderLine CURSOR LOCAL SCROLL FOR select je,id,sl from tb_ddgl_xiaoshouddh where
[email protected]

               OPEN orderLine
               FETCH NEXT FROM orderLine INTO @orderLineJe,@orderLineId,@orderLineSl
               WHILE @@FETCH_STATUS = 0
               BEGIN
                     update tb_ddgl_xiaoshouddh set [email protected]*@orderLineJe/@orderHeadSpje, [email protected]*@orderLineJe/(@orderHeadSpje*@orderLineSl) where id = @orderLineId 
                     insert INTO tb_ddgl_xiaoshouddmx(ddhid,ddid,mxhlx,mxx,je,cjsj,zt)VALUES(@orderHeadId,@orderLineId,@mxhlx,'運費',@yf*@orderLineJe/@orderHeadSpje,GETDATE(),'Y')
                     FETCH NEXT FROM orderLine INTO @orderLineJe,@orderLineId,@orderLineSl
               END
               CLOSE orderLine  
               DEALLOCATE orderLine
               update tb_ddgl_xiaoshouddt set [email protected] where [email protected]
          END 
       FETCH NEXT FROM orderHead INTO @yf,@orderHeadId,@orderHeadSpje   
    END
    CLOSE orderHead  
    DEALLOCATE orderHead
  End
   

相關推薦

sql server儲存過程迴圈呼叫

ALTER PROCEDURE [dbo].[OMS_DISCOUNT_SHARING_PRO]   @lypt AS VARCHAR(10)  AS DECLARE @orderStatus VARCHAR(10); DECLARE @orderlypt VARCHAR(

Yii2.0呼叫sql server儲存過程並獲取返回值

1、首先展示建立sql server儲存過程的語句,建立一個簡單的儲存過程,測試用。 1 SET ANSI_NULLS ON 2 GO 3 SET QUOTED_IDENTIFIER ON 4 GO 5 6 CREATE PROCEDURE [dbo].[register_info]

Excel使用ADO呼叫SQL Server儲存過程

測試環境:SQL Server 2014,Excel 2013前期在做一個現場投票的小軟體,準備使用Excel實現,工作簿中包含有兩個工作表,各包含一個命令按鈕,分別用於提交和檢視投票結果。問題出在檢視投票按鈕上,起初只是使用SELECT語句查詢,一切正常;後期對於投票結果需

Sql Server 儲存過程呼叫儲存過程接收輸出引數,返回值

CREATE PROCEDURE [dbo].[GetCustomers]   (@rowcount INT OUTPUT)   AS        SELECT [CustomerID]         ,[CompanyName]         ,[ContactName]         ,[

SQL server 儲存過程的編寫

USE [資料庫名稱] GO /****** Object:  StoredProcedure [dbo].[insertbGait]    Script Date: 2018/7/17 15:51:22 ******/ SET ANSI_NULLS ON GO

SQL SERVER儲存過程加密和安全上下文

對SQL Server 2008的安全入門略作小結,以作備忘。本文涉及兩個應用:儲存過程加密和安全上下文。 <一>儲存過程加密 SQL server,我已經成了儲存過程的忠實擁躉。在直接使用SQL語句還是儲存過程來處理業務邏輯時,我基本會毫不猶豫地選擇後者。 理由如下:

SQL Server 儲存過程返回值的幾種方式

獲得儲存過程的返回值–通過查詢分析器獲得 (1)不帶任何引數的儲存過程(儲存過程語句中含有return) —建立儲存過程 CREATE PROCEDURE testReturn AS return 145 GO —執行儲存過程 DECLARE @RC int exec @RC=

SQL Server儲存過程的使用

   儲存過程概述   簡單來說,儲存過程就是一條或者多條sql語句的集合,可視為批處理檔案,但是其作用不僅限於批處理。  基本概念:   SQL Server中的儲存過程是使用T_SQL編寫的程式碼段。它的目的在於能夠方便的從系統表中查詢資訊,   或者完成與更新資料

SQL Server 儲存過程返回值彙總

獲得儲存過程的返回值–通過查詢分析器獲得 (1)不帶任何引數的儲存過程(儲存過程語句中含有return) —建立儲存過程 CREATE PROCEDURE testReturn AS return 145 GO —執行儲存過程 DECLARE @RC in

Sql Server 儲存過程 - 使用者操作例項

使用者的增刪改查 新增 --新增使用者 create procedure addDeviceUser @name nvarchar(36) , @phone nvarchar(36) , @password nvarchar(255) as begin if exists(

Sql server 儲存過程

-- ======================================= -- Author: <zengyongbin> -- Create date: <2018-11-11> -- Description: <新增> --

關於SQL SERVER 儲存過程使用(2)

  現在有一場景,需要調用出公司員工在本週的請假天數。程式碼如下(1),本人一開始寫的時候用遍歷裡面套著一個遍歷,發現效果出不來如下(2),求是否有什麼方法可以實現遍歷裡面還有個遍歷。 SQL程式碼(1): --建立儲存過程 create procedure LeaveT

SQL Server儲存過程中top後為變數時的處理

@pageRecordNum為每頁顯示的記錄數,@currentPageNum為當前的頁數 create proc pagination  @pageRecordNum int,@currentPageNum int as  declare @recNum varchar(

無意中發現的sql server 儲存過程加密破解方法

轉自:https://blog.csdn.net/gatr/article/details/51226122  儲存過程是資料庫中一個非常重要的該部分,很多業務邏輯都可能寫在儲存過程裡面,為了安全,部分儲存過程是加密存放的,如果我們想看到原始碼,就非常困難了,在sql  se

SQL SERVER儲存過程批量插入資料庫表資料

CREATEPROCEDURE add_UserInfoASDECLARE@userCodeVARCHAR(30)DECLARE@userNameVARCHAR(30)DECLARE@userCode_baseVARCHAR(30)DECLARE@countINTEGERDECLARE@indexINTEGE

SQL server 儲存過程的建立並使用

什麼是儲存過程呢? 儲存過程就是作為可執行物件存放在資料庫中的一個或多個SQL命令。  通俗來講:儲存過程其實就是能完成一定操作的一組SQL語句。 那為什麼要用儲存過程呢? 1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般SQL語句每執行一

Sql Server儲存過程從一個表中抓取資料填充到另一張表中

  set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author:  <alex,,Name> -- Create

SQL Server儲存過程Return、output引數及使用技巧

SQL Server目前正日益成為WindowNT作業系統上面最為重要的一種資料庫管理系統,隨著 SQL Server2000的推出,微軟的這種資料庫服務系統真正地實現了在WindowsNT/2000系列作業系統一統天下的局面,在微軟的作業系統上,沒有任何一種資料庫系統能

sql server儲存過程 以及幾個常用案例

Transact-SQL中的儲存過程,非常類似於Java語言中的方法,它可以重複呼叫。當儲存過程執行一次後,可以將語句快取中,這樣下次執行的時候直接使用快取中的語句。這樣就可以提高儲存過程的效能。 Ø 儲存過程的概念     儲存過程Procedure是一組為了完成特定功能的SQL語句集合,經編譯後儲存在資

sql server 儲存過程解密

問題一: DAC連線問題 1 先用有sysadmin角色的使用者登陸SQL Server Management Studio; 2 在工具欄上選資料庫引擎查詢;伺服器名稱改為 ADMIN:伺服器名稱 ;選項>連線屬性>連線到資料庫 改為加密儲存過程所在的資