找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2456|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

MSSQL可編程函數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:83710 發(fā)表于 2015-6-25 17:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
       實習(xí)加上工作也有九個多月了,相對于在學(xué)校的兩年半里這九個月相當(dāng)?shù)某鋵嵉坪踹缺少什么。在沒有老師的摧殘下我還能茁壯的成長。從2.20號正式入職后也從學(xué)生正式步入社會崗位,從當(dāng)初的什么都不懂在逐漸的學(xué)習(xí)、沉淀下領(lǐng)悟了生存的本領(lǐng)。
        程序人生、一條在自己高中時代就埋下的種子開始發(fā)芽了。。。

        GoodLuck!!

        MSSQL數(shù)據(jù)庫在學(xué)校內(nèi)老師曾給我們講結(jié)果,但是那種到最后一節(jié)課才參透“數(shù)據(jù)庫”是干什么用的人來說未免有些后知后覺。。。對于一個程序員來說過硬的編程基礎(chǔ)敏捷的邏輯思維固然重要。但是最后承載記錄這些結(jié)果與過程都需要一個載體,那他就是數(shù)據(jù)庫,顧名思義數(shù)據(jù)庫——“存儲數(shù)據(jù)的倉庫”。學(xué)生時代普遍的現(xiàn)象就是各種各樣的老師在4個月的時間內(nèi)給你“SET”一種技能,而學(xué)生只用假期一個月的時間就給“Release”掉了。。。
        我也一樣、本來就不機(jī)靈再加記憶力。。。沒辦法自己重新找?guī)妆居袪I養(yǎng)的數(shù)看,本來我的習(xí)慣是只用數(shù)據(jù)庫單純的“增”、“刪”、“改”、“查”,甚至于鏈表查詢都能不用就不用。但是受到項目經(jīng)理吳哥的啟發(fā),他說如果你讓數(shù)據(jù)庫替你處理一些簡單的邏輯那你前臺頁面就剩下顯示了。
        昨天查詢需要自己編寫了第一個可編程數(shù)據(jù)庫函數(shù),在吳哥指導(dǎo)下順利完成、雖然比較簡單,但是凡事都是由淺入深的嗎、

SQL Server腳本源碼:
 

USE [JinZhiSuLiao]
GO
/****** Object:  UserDefinedFunction [dbo].[udf_GetSalesTable]    Script Date: 11/29/2014 10:48:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER FUNCTION [dbo].[udf_GetSalesTable](@aPlanTranDate DATETIME,@aType int)
RETURNS 
@S_Tabel TABLE(
CustomerId VARCHAR(50), -- 客戶Id
CustomerName VARCHAR(50), -- 客戶名稱
ProductId VARCHAR(50), -- 產(chǎn)品Id
ProductName VARCHAR(50), -- 產(chǎn)品名稱
UnitPrice decimal(9,3) DEFAULT 0.00, -- 單價
SingleWeight decimal(9,3) DEFAULT 0.00, -- 單個重量
TransportId VARCHAR(50), -- 運(yùn)輸派車單詳細(xì)Id
AllNumber decimal(9,3) DEFAULT 0.00, -- 總數(shù)量
Allprice decimal(9,3) DEFAULT 0.00, -- 總金額
AllWeight decimal(9,3) DEFAULT 0.00, -- 總重量
EndNumber decimal(9,3) DEFAULT 0.00 -- 客戶結(jié)款的數(shù)量
)
AS
BEGIN

declare @dtMainTable table
(
cCTSC_ID varchar(50)
)
DECLARE @nMainCount INT -- 運(yùn)輸派車單主表個數(shù)
IF(@aType = 0)
BEGIN
insert into @dtMainTable 
SELECT CTSC_ID from CRM_TransportSendCar WHERE CONVERT(DATETIME,CTSC_Date,120) = CONVERT(DATETIME,@aPlanTranDate,120)  
END
ELSE IF(@aType = 1)
BEGIN
insert into @dtMainTable 
SELECT CTSC_ID from CRM_TransportSendCar WHERE Datepart(YEAR,CTSC_Date) = Datepart(YEAR,@aPlanTranDate)  AND Datepart(month,CTSC_Date) = Datepart(month,@aPlanTranDate) 
END
-- 定義一個游標(biāo)
DECLARE @CTSC_ID VARCHAR(50)
DECLARE curMainId CURSOR FOR
SELECT cCTSC_ID FROM @dtMainTable
OPEN curMainId
FETCH NEXT FROM curMainId INTO @CTSC_ID
WHILE  @@FETCH_STATUS = 0
BEGIN
-- 創(chuàng)建臨時變量
DECLARE @CustomerId VARCHAR(50) -- 客戶Id
DECLARE @CustomerName VARCHAR(50) -- 客戶名稱
DECLARE @ProductId VARCHAR(50) -- 產(chǎn)品Id
DECLARE @ProductName VARCHAR(50) -- 產(chǎn)品名稱
DECLARE @UnitPrice decimal(9,3) -- 單價
DECLARE @SingleWeight decimal(9,3) -- 單個重量
DECLARE @TransportId VARCHAR(50) -- 運(yùn)輸派車單詳細(xì)Id
DECLARE @AllNumber decimal(9,3) -- 總數(shù)量
DECLARE @Allprice decimal(9,3) -- 總金額
DECLARE @AllWeight decimal(9,3) -- 總重量
DECLARE @EndNumber decimal(9,3) -- 客戶結(jié)款的數(shù)量
-- 運(yùn)輸派車單子表查詢、一個主表對應(yīng)一種產(chǎn)品
SELECT DISTINCT @CustomerId=CTSCD_CustomerID,@ProductId=CTSCD_ProductID,@UnitPrice=@UnitPrice FROM CRM_TransportSendCarDetails WHERE CTSCD_OrderID = @CTSC_ID
SELECT @CustomerName=CMC_Name FROM CRM_Customers WHERE CMC_ID = @CustomerId
SELECT @ProductName=BP_Name,@SingleWeight=BP_weight FROM BOM_Products WHERE BP_ID = @ProductId
SET @TransportId = @CTSC_ID
SELECT @AllNumber=SUM(CTSCD_OutNumbers) FROM CRM_TransportSendCarDetails WHERE CTSCD_OrderID = @CTSC_ID
SET @Allprice = @AllNumber * @UnitPrice
SET @AllWeight = @AllNumber * @SingleWeight
-- 客戶結(jié)余數(shù)量未填寫、2014-11-28當(dāng)前未涉及到財務(wù)所以無法賦值——By:CaiYong
INSERT INTO @S_Tabel(CustomerId,CustomerName,ProductId,ProductName,UnitPrice,SingleWeight,TransportId,AllNumber,Allprice,AllWeight,EndNumber)
VALUES(@CustomerId,@CustomerName,@ProductId,@ProductName,@UnitPrice,@SingleWeight,@TransportId,@AllNumber,@Allprice,@AllWeight,@EndNumber)
FETCH NEXT FROM curMainId INTO @CTSC_ID
END
CLOSE curMainId;
DEALLOCATE curMainId;

RETURN 
END
  
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表