2011-08-23 29 views
5

Kendimi aptal gibi hissediyorum, ancak bu SP varsayılan değerini bir değere dönüştüremiyorum .... İşte parametrelerimi bildiriyorum. Ben @cacheStatus için varsayılan notReady alamayan hariçSQL Server 2008'de varsayılan parametre değerleri saklı yordamı

ALTER PROCEDURE [dbo].[PCS_DocumentCacheInsert] 
(
    @sessionId varchar(200), 
    @mrn varchar(50) , 
    @fromDate datetime, 
    @toDate datetime, 
    @aggregate varchar(50), 
    @author varchar(50), 
    @datePerformed dateTime, 
    @docId varchar(15), 
    @encounterId varchar(15), 
    @facility varchar(5), 
    @level char(1), 
    @orderedByAuthor varchar(50), 
    @resultAuthor varchar(50), 
    @resultCode varchar(5), 
    @resultId varchar(30), 
    @resultName varchar(30), 
    @status varchar(5), 
    @subType varchar(10), 
    @type varchar(10), 
    @security varchar(3), 
    @serviceGroup varchar(15), 
    @witmurNum varchar(10), 
    @deptId varchar(10), 
    @deptText varchar(40), 
    @cacheCreateTS dateTime , 
    @cacheStatus varchar(8) ='notReady', 
    @cacheUpdateTS datetime 
) 

Her şey bu proc ile çalışıyor. Google, doğru sözdizimini kullandığımı söylüyor. i MS'te @return_value

yüzden onun şimdi çalışıyor bu eklenmiş ve GO =

EXEC @return_value = [dbo].[PCS_DocumentCacheInsert] 
    @sessionId = N'asdfssa', 
    @mrn = N'asdf', 
    @fromDate = NULL, 
    @toDate = NULL, 
    @aggregate = NULL, 
    @author = N'author', 
    @datePerformed = NULL, 
    @docId = N'id', 
    @encounterId = NULL, 
    @facility = NULL, 
    @level = NULL, 
    @orderedByAuthor = NULL, 
    @resultAuthor = NULL, 
    @resultCode = NULL, 
    @resultId = NULL, 
    @resultName = NULL, 
    @status = NULL, 
    @subType = NULL, 
    @type = NULL, 
    @security = NULL, 
    @serviceGroup = NULL, 
    @witmurNum = NULL, 
    @deptId = NULL, 
    @deptText = NULL, 
    @cacheCreateTS = NULL, 
    @cacheStatus = NULL, 
    @cacheUpdateTS = NULL 

SEÇ 'Dönüş Değeri' diyoruz nasıl burada

, ama anlamıyorum neden saklı yordamı çalıştırdığımı ve çalıştırdığımı söylediğimde null onay kutularını neden varsayılan olarak seçmediğimi seçin. NULL denetlemek null 'NULL' proxy değil DBNull gönderir?

if @cacheStatus is null 
begin 
    set @cacheStatus ='notReady' 
end 
+0

sen SP denir nasıl bir örnek sağlayabilir şansın var mı? – Justin

+0

Sözdizimi güzel görünüyor. @cachStatus'a geçtiğiniz değeri kontrol edin. (yani, birini geçmediğinizden emin olun). – Chains

+0

Bunu varlık çerçevelerinden (bir WCF hizmetinden) ve yönetim stüdyosunda aynı davranışı her iki yerde de – cobolstinks

cevap

17

Bu parametrenin değeri olarak null değerini göndermediğinizden emin misiniz? Varsayılan, sadece bu parametreyi hiç göndermezseniz kullanılır. Varsayılan alışması istiyorsanız

EXEC @return_value = [dbo].[PCS_DocumentCacheInsert] 
    @sessionId = N'asdfssa', 
    @mrn = N'asdf', 
    @fromDate = NULL, 
    @toDate = NULL, 
    @aggregate = NULL, 
    @author = N'author', 
    @datePerformed = NULL, 
    @docId = N'id', 
    @encounterId = NULL, 
    @facility = NULL, 
    @level = NULL, 
    @orderedByAuthor = NULL, 
    @resultAuthor = NULL, 
    @resultCode = NULL, 
    @resultId = NULL, 
    @resultName = NULL, 
    @status = NULL, 
    @subType = NULL, 
    @type = NULL, 
    @security = NULL, 
    @serviceGroup = NULL, 
    @witmurNum = NULL, 
    @deptId = NULL, 
    @deptText = NULL, 
    @cacheCreateTS = NULL, 
    [email protected] = NULL, 
    @cacheUpdateTS = NULL 

Sen @cacheStatus geçemez: Böyle

IF @Cachestatus IS NULL SET @cachestatus = 'NotReady' 
+4

+1'i kullanmak için kullanabilirsiniz. @Cachestatus IS NULL SET @cachestatus = 'NotReady' – JNK

+0

@JNk bunu gerçekten de onun problemi ise kabul edilmesi gereken büyük bir cevap olarak ekleyin. – HLGEM

+0

@HL - "NULL" u geçmeden biggie'ye işaret etmeden bunu yapamazdım. Bunun için cevabınıza bir çizgi ekleyin. – JNK

3

Çağrı it: Bu sorunu varsa

@JNK böyle bir çözüm önerir .

2

Henüz belirtilmemiş olan bir diğer seçenek de, NULL değeri yerine "DEFAULT" anahtar sözcüğünü kullanmaktır. SP çağrılırken

Yani kod şöyle olacaktır:

EXEC @return_value = [dbo].[PCS_DocumentCacheInsert] 
    @sessionId = N'asdfssa', 
    @mrn = N'asdf', 
    @fromDate = NULL, 
    ... Just got rid of some lines to focus on the param in question - see DEFAULT below 
    @cacheCreateTS = NULL, 
    @cacheStatus = DEFAULT, 
    @cacheUpdateTS = NULL 
İlgili konular