我觉得自己像个白痴,但是我不能让这个SP默认为一个值....这就是我如何宣布我的参数。
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
)
这个过程一切正常,但我无法notReady
为@cacheStatus
的默认值。谷歌说我正在使用正确的语法。
这是我在MS中打电话的方式
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
选择'返回值'= @return_value
GO
所以我现在添加了这个和它的工作,但我不明白为什么当我右键单击并说出执行存储过程然后选择空复选框为什么它不会默认。我想检查null会向proc发送'NULL'而不是DBNull吗?
if @cacheStatus is null
begin
set @cacheStatus ='notReady'
end
答案 0 :(得分:17)
你确定你没有发送null作为该参数的值吗?仅当您根本不发送该参数时才使用默认值。
如果您遇到此问题,@ JNK建议采用这样的解决方法:IF @Cachestatus IS NULL SET @cachestatus = 'NotReady'
答案 1 :(得分:3)
这样称呼:
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
如果您希望使用默认值,则无法传递@cacheStatus
。
答案 2 :(得分:2)
尚未提及的另一个选项是使用关键字“DEFAULT”而不是传递NULL值。
因此,在调用SP时,代码将是:
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