您的位置:首页 > 编程语言 > ASP

对于存储过程中传入参数是否设置默认值的心得

2016-09-07 11:38 211 查看
下面三句话是Microsoft相关网站的专业解释。
通过为可选参数指定默认值,可创建带有可选参数的存储过程。执行该存储过程时,如果未指定其他值,则使用默认值。
如果在存储过程中没有指定参数的默认值,并且调用程序也没有在执行存储过程时为该参数提供值,那么会返回系统错误,因此指定默认值是必要的。
如果不能为参数指定合适的默认值,则可以指定NULL 作为参数的默认值,并在未提供参数值而执行存储过程的情况下,使存储过程返回一条自定义消息。
create PROCEDURE [dbo].[US_Patient_Practice]
    @FAgentIDint,
    @FSortvarchar(50)='FFirstSite',
    @FDescvarchar(4)='ASC',
    @FBinDatevarchar(50),--开始时间
    @FEndDatevarchar(50)--结束时间
 
as
declare @SSQL
varchar(4000)
--US_Patient_Practice14,'FFirstSite','asc'
如上述存储过程中开始时间和结束时间是没有默认值的,下面执行存储过程语句是没有给开始时间参数中和结束时间赋值的,此时发生如下错误
消息 201,级别 16,状态 4,过程US_Patient_Practice,第 18 行
过程或函数'US_Patient_Practice' 需要参数 '@FBinDate',但未提供该参数。
在程序中调用该存储过程时,即使我们在页面上未对该参数进行赋值,只要在调用存储过程语句时,给参数赋值,就不会发生错误。
VSQL = String.Format("US_Patient_SelectPart{0},'{1}','{2}','{3}','{4}'", ddlFAgent.SelectedValue, sortField,sortDirection, tbx_FBegDate.Text, tbx_FEndDate.Text)
在vb语句中上述语句中tbx_FBegDate.Text和tbx_FEndDate.Text,即使我们在页面中没有对这俩个日期控件选择,此时其实debug下可观察到其值为””即为空字符串。
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  asp.net sql存储过程