2013-03-08 67 views
1

我有一個存儲過程調用另一個存儲過程多次使用不同的參數和填充臨時表。手動填充未嵌套的SP調用填充的其他列

--load inactive SKUs 
INSERT INTO #tmpSKUs 
exec GetAdvancedSkus @editionId 

--load retailer specific SKUs 
INSERT INTO #tmpSKUs 
exec GetAdvancedSkus @editionId, 2, 1 

我想要做的是手動填充(硬編碼)的#tmpSKUs表的SKUType列(此列不被填充)每次迭代,使無效的SKU的情況下,將填寫結果並在SKUType列中添加「無效」。我無法修改GetAdvancedSKUs,因爲存儲過程有很多依賴關係。

下面是完整的SP代碼

ALTER proc [dbo].[GetSkuTypes] 
@editionId as int, 
@isbnNum as nvarchar(20)=null, 
@upcCode as nvarchar(20)=null, 
@productNum as nvarchar(20)=null 
as 

IF (@editionId > 0) 
BEGIN 
CREATE TABLE #tmpSKUs 
(
    SKUId int, 
    ProductNumber varchar(255), 
    ISBN varchar(255), 
    UPC varchar(255), 
    Territory varchar(255), 
    Format varchar(255), 
    Division varchar(255), 
    SourceTag varchar(255), 
    PictureFormat varchar(255), 
    Retailer varchar(255), 
    TextAddDetails nvarchar(3000), 
    AddDetails nvarchar(3000), 
    PackagingLanguage varchar(255), 
    EditionId int, 
    BluePrintPublishStatus varchar(255), 
    SAPPublishStatus varchar(255), 
    SKUType varchar(255) 
) 

--load inactive SKUs 
INSERT INTO #tmpSKUs 
exec GetAdvancedSkus @editionId 

--load national single SKUs 
INSERT INTO #tmpSKUs 
exec GetAdvancedSkus @editionId, 1, 1 

--load retailer specific SKUs 
INSERT INTO #tmpSKUs 
exec GetAdvancedSkus @editionId, 2, 1 

SELECT * FROM #tmpSKUs 


END 

回答

0

你能只是手動更新後插入列?

--load inactive SKUs 
INSERT INTO #tmpSKUs 
exec GetAdvancedSkus @editionId 

UPDATE #tmpSKUs 
SET SKUType = 'Inactive' 

--load national single SKUs 
INSERT INTO #tmpSKUs 
exec GetAdvancedSkus @editionId, 1, 1 

UPDATE #tmpSKUs 
SET SKUType = 'National Single' 
WHERE SKUType <> 'Inactive' 

--load retailer specific SKUs 
INSERT INTO #tmpSKUs 
exec GetAdvancedSkus @editionId, 2, 1 

UPDATE #tmpSKUs 
SET SKUType = 'Retailer Specific' 
WHERE SKUType NOT IN ('Inactive', 'National Single') 

SELECT * FROM #tmpSKUs 
+0

我已經試過了,但執行時間上升顯著VS離開欄爲空白(12秒比5) – pnduke 2013-03-08 18:52:01

+0

@pnduke正在從存儲過程的每次執行返回多少行?這似乎是一個大的增加,我認爲這不是一個大量的數據......但是,如果不能改變存儲過程,我不知道你是否能夠避免增加任何開銷改變結果。平均約有8K行,約爲 – 2013-03-08 18:57:11

+0

。如果是這樣的話,我可能不得不解決手動更新。我希望有一個簡單的方法可以在旅途中做到這一點(隨着數據的填充)。 – pnduke 2013-03-08 20:27:53