SQL Server 2008存储过程中的默认参数值
问题描述:
我觉得自己像一个白痴,但我不能让这个SP默认值....这是我如何声明我的参数。除了我不能得到notReady
默认为@cacheStatus
SQL Server 2008存储过程中的默认参数值
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
)
一切正常,这个PROC。 Google说我正在使用正确的语法。
这里是我的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而不是DBNull?
if @cacheStatus is null
begin
set @cacheStatus ='notReady'
end
答
这样称呼它:
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
,如果你想获得使用默认的你不可错过@cacheStatus
。
答
另一个尚未提及的选项是使用关键字“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
任何机会,你可以提供的SP是如何被调用的样本? – Justin
你的语法看起来不错。检查你传递给@cachStatus的值。 (即,确保你没有通过)。 – Chains
我从实体框架(从WCF服务)和管理工作室调用它同样的行为这两个地方都没有默认值 – cobolstinks