数据库存储过程
- 存储过程,功能强大,可以执行包括修改表等一系列数据库操作,也可以创建为 SQL Server 启动时自动运行的存储过程。
- 自定义函数,用户定义函数不能用于执行一组修改全局数据库状态的操作。
- 存储过程,可以使用非确定函数。
- 自定义函数,不允许在用户定义函数主体中内置非确定函数。
- 存储过程,可返回记录集。
- 自定义函数,可以返回表变量。
- 存储过程,其返回值不能被直接引用。
- 自定义函数,其返回值可以被直接引用。
- 存储过程,用 EXECUTE 语句执行。
- 自定义函数,在查询语句中调用。
什么是数据库列存储,原理是怎样的?
数据库列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因 此整个数据库是自动索引化的。
按列存储每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量,一个字段的数据聚集存储,那就 更容易为这种聚集存储设计更好的压缩/解压算法。
这张图讲述了传统的行存储和列存储的区别:
数据库中的存储过程到底是什么?能不能举个详细的例子?
存储过程,实际就是一段写在数据库中的代码。
。
由于此段数据库操作代码由服务器完成,而客户端只是进行简单的参数提交,所以,可以有效的利用服务器的强劲而减小对客户机的负合。
如:你想插入一条数据到数据库。
虽然你的要求是,先检查表里面是否己存在该项。
如果不存在就Insert,如果存在就UPDATE。
这个时候,你就可以把这个判断用存储过程来写。
你的程序只要提示你想要保存到数据库里面的东西即可。
下面就是一个简单的存储过程。
CREATE PROCEDURE [insert_A_Employees]
(@fWorkNo [int],
@fWorkName [char](10),
@fDeptName [varchar](20),
@fGroupName [varchar](20),
@fRecordDate [datetime])
AS
declare @iCount int
select @iCount = count(*) from A_EMPLOYEES where @fWorkNo = fWORKNO --统计该工号在数据库的数量赋值给 @iCount
if @iCount = 0 --如果数据库中不存在该工号
begin
INSERT INTO [CLKQ].[dbo].[A_Employees] --则插入数据
( [fWorkNo],
[fWorkName],
[fDeptName],
[fGroupName],
[fRecordDate])
VALUES
( @fWorkNo,
@fWorkName,
@fDeptName,
@fGroupName,
@fRecordDate)
return 1 --返回一个标识
end else begin --否则则更新数据
update [CLKQ].[dbo].[A_Employees]
set [fWorkName]=@fWorkName,
[fDeptName]=@fDeptName,
[fGroupName]=@fGroupName,
[fRecordDate]=@fRecordDate
where [fWorkNo]=@fWorkNo
return 0 --返回一个标识
end
GO
此时你只要在客户端程序提供:
@fWorkNo ,
@fWorkName ,
@fDeptName ,
@fGroupName ,
@fRecordDate
这几个值就行了。
。
其它处理过程就由服务器方处理了。
以上是以 SQL 数据库为例。
。
。
ACCESS 等数据库没有此功能。