对于存储过程中传入参数是否设置默认值的心得
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下可观察到其值为””即为空字符串。
通过为可选参数指定默认值,可创建带有可选参数的存储过程。执行该存储过程时,如果未指定其他值,则使用默认值。
如果在存储过程中没有指定参数的默认值,并且调用程序也没有在执行存储过程时为该参数提供值,那么会返回系统错误,因此指定默认值是必要的。
如果不能为参数指定合适的默认值,则可以指定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下可观察到其值为””即为空字符串。
相关文章推荐
- SQL SERVER2000 存储过程 设置传入参数默认值
- SQL SERVER2000 存储过程 设置传入参数默认值
- 存储过程+调用存储过程+无/带参的存储过程+in参数+out参数+int out参数+为参数设置默认值
- 在存储过程里使用OleDB和Sql连接对于参数的区别
- 从存储过程中读取参数设置
- 如何设置SQl存储过程调用参数为空
- 存储过程--参数默认值的问题
- 请问视图是否可以像存储过程那样带参数进行查询
- sql根据传入参数确定选择前几条数据的存储过程
- SQL存储过程测试(7)——当待测存储过程返回out参数时 如何判断测试结果是否通过
- 好东西:让存储过程的参数也能传入数组的方法
- 存储过程的参数默认值的问题
- 关于存储过程的ADO调用的一些心得(输出参数,返回值)
- 以表达式作为参数传入SQL的存储过程中去
- 关于存储过程的ADO调用的一些心得(输出参数,返回值)
- 关于存储过程的ADO调用的一些心得(输出参数,返回值)
- 存储过程中如何根据参数是否为空执行不同的select??
- 从存储过程中读取参数设置
- 项目问题-------传入存储过程中的参数的长度一定要和数据库表的字段长度保持一直
- 存储过程参数的时间默认值解决方法