下面三句话是Microsoft相关网站的专业解释。
通过为可选参数指定默认值,可创建带有可选参数的存储过程。执行该存储过程时,如果未指定其他值,则使用默认值。
如果在存储过程中没有指定参数的默认值,并且调用程序也没有在执行存储过程时为该参数提供值,那么会返回系统错误,因此指定默认值是必要的。
如果不能为参数指定合适的默认值,则可以指定NULL 作为参数的默认值,并在未提供参数值而执行存储过程的情况下,使存储过程返回一条自定义消息。
create
PROCEDURE
[dbo]
.
[US_Patient_Practice]
@FAgentID
int
,
@FSort
varchar
(
50
)=
'FFirstSite'
,
@FDesc
varchar
(
4
)=
'ASC'
,
@FBinDate
varchar
(
50
),
--
开始时间
@FEndDate
varchar
(
50
)
--
结束时间
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下可观察到其值为””即为空字符串。
Oracle 在9i版本之前,需要对内存
参数
手动
设置
,由于系统的负载是动态变化的,很难
设置
一个合适的值。在Oracle9i版本之后,有了自动内存管理的功能,大大方便了DBA的工作。只要对PGA,SGA,Log_buffer 三个
参数
值
设置
好,Oralce会根据系统的负载动态平衡各个
参数
的
设置
。如何
设置
PGA的
参数
:在Oracle EM 内存
参数
页面,可以查看Oracle 对于PGA的建议,这是Or...
CACHE_POOL_SIZE
默认值
20M,一般在内存小于16G的情况下,建议
设置
为200M,内存大于16G,小于64G,建议
设置
为1024M,当内存大于64G时,建议
设置
为2048M。一般在内存小于16G的情况下,建议
设置
为256M,内存大于16G,小于64G,建议
设置
为1024M,当内存大于64G时,建议
设置
为2048M。SORT_BLK_SIZE:默认为 1M,新排序机制下,每个排序分片空间的大小,必须小于 SORT_BUF_GLOBAL_SIZE。SORT_BUF_SIZE:默认为2。
通用概念介绍:
SQL
:全称叫结构化查询语言(Structured Query Language),是用来访问关系型数据库一种通用语言,因为语法更接近自然语言所以学习门槛较低。属于非过程化语言,即可以直接通过简单的调用相应语句来直接取得结果,目前流行的
SQL
语言标准为可读性较好的ANSI
SQL
-99标准。
PL/
SQL
:全称叫过程化
SQL
语言(Procedural Language/
SQL
),它是一种过程化语言。PL/
SQL
增加了逻辑判断、循环等功能,使其具有Java、C++、Python等高级语言所.
- 调用者在exec_stmt_call
中
拼接ParamListInfo传给SPI去执行call xxxx命令。
- ParamListInfo记录了PL的一些回调函数,在SPI会走到:ExecuteCallStmt
- ExecuteCallStmt核心流程两步:
- 1. 拼
参数
列表:会拿到所有
入参
- 假设第一个
入参
是Param类型,会回调PL的plpg
sql
_param_fetch函数,从PL的Datums
中
拿变量的值赋值给fcinfo->args[0]
由于某些安全审计的需要,涉及到数据插入需要记录用户和时间。此情况下,必须使用触发器而不是DEFAULT子句的最主要原因是
默认值
可以被覆盖,而触发器则永远会存入正确的数据,而不管insert语句传递的值
是否
正确。通常由触发器解决的常见问题时:在DEFFAULT不适用的情况下
设置
列的
默认值
。有两个典型例子:生成顺序混乱的序列的合成对象ID,以及填充基本的审计数据。在这些情况下使用触发器会有不同的功能上的优点。测试结果显示,触发器造成的开销要更多。6、达梦数据库引入强制访问控制,在一定程度上满足个人安全的功能。
在
sql
查找赋值有空值时可赋值
默认值
declear @arg_name varchar(32);
select @arg_name = isnull(name, '未知姓名') from student...
在使用
SQL
SERVER的
存储过程
的时候,有时我们会
传入
一些
参数
。而其
中
默认
参数
的使用时经常会见到的。下面小编给大家分享一下在
SQL
SERVER
中
如何给
存储过程
设置
默认
参数
。
工具/原料
SQL
SERVER 2012
方法/步骤
首先我们在下面的
SQL
输入界面
中
新建一个
存储过程
,如下图所示,我们
设置
一个默认
参数
SYBASE 数据库操作笔记(转自MaYong)数据库表名、列名(执行严格的大小写)数据库表名、列名识别大小写区分(即表名是大写 查询时小写就错误)大小写敏感的问题是因为字符集影响的,改为UTF8字符集后问题解决。SYBASE数据库的缺陷(版本SYBASE ASE 15.5)(目前在使用过程
中
发现的数据库本身的缺陷)1.创建表是
设置
列的
默认值
是不会检测的(例如一列字段的数据类型为VARCHAR,默...
--今天回帖偶遇一问题,
存储过程
默认值
的问题,然后查了MSDN,所以记一下--http://technet.microsoft.com/zh-cn/library/ms189330.aspx--先看几个过程的执行--1ALTER PROC P (@S DECIMAL=A)AS SELECT @SGOEXEC PGO/*服务器: 消息 8114,级别 16,状态 5,过程 P,行 0将数据类型 nvarchar 转换为 numeric 时出错。*/--2ALTER PROC P (@S VARCHAR(1)