我的第一個帖子的時候完美的作品,所以請溫柔與我:)更新語句,但在這裏手動運行
我有我需要一些源數據的存儲過程,做一些操作,在其上運行一些更新語句,然後將數據放入我們的主數據表(我想你可以說它是一個ETL)。我遇到的問題是我編寫的一些更新語句在程序運行時似乎沒有奏效,但是,如果我在一個單獨的查詢窗口中手動運行它們,它們可以很好地工作。技術上有兩部分更新聲明和一個部分更新,另一個失敗,這進一步增加了我的麻煩。
的用於更新的代碼段如下所示:
UPDATE Prod_DDb.dbo.DataLoadTeleconnect
SET pCommissionValue = (SELECT Commission
FROM dbo.MappingiPhoneCommission
WHERE Prod_DDb.dbo.DataLoadTeleconnect.pMRC BETWEEN BaseMRC AND HighMRC),
pMRCBand = (SELECT MRCBand
FROM dbo.MappingiPhoneCommission
WHERE Prod_DDb.dbo.DataLoadTeleconnect.pMRC BETWEEN BaseMRC AND HighMRC)
WHERE pMapID = 'iPhone'
的代碼更新2列在我的源表,其中記錄的MRC落在底座和高MRC之間。佣金是沒有更新的值,但MRCBand正確更新。
的MappingiPhoneCommission表有以下幾列:
- BaseMRC
- HighMRC
- 委員會
- MRCBand
如果任何人都可以擺脫任何光線到爲什麼會在失敗存儲過程,但在新的查詢窗口中運行良好,我將非常感激。
如果您需要任何進一步的信息,請讓我知道,我會盡力提供所需的。
親切的問候 託尼
更新pCommissionValue的子查詢總是返回單個值? – Farhan
當您在存儲過程之外運行查詢時,是否只運行UPDATE語句或該存儲過程中的所有內容? – Farhan
如果我運行整個過程不作爲過程,列不更新,但只運行我張貼的代碼,確實工作。映射表基本上有以下0,25,5,Bronze; 26,35,7,Silver; 36,99999,9,Gold。這些是虛構的記錄,但是聲明所做的是採用記錄的MRC值,找出它適合的基本和高MRC範圍,並返回COMMI值和MRCBand。例如,如果記錄MRC是35,委員會將是7和MRCBand銀。 – Gortreck