- 关 键 词:
- sql server
- 数据仓库
- 存储过程
- 数据库
新建一个带有表值参数的存储过程
我们要创建一个存储过程,该存储过程执行代理键查找命令,如果源键不存在则添加一个推理成员。首先我们需要新建一个维度表样例:
| 以下是引用片段: CREATE TABLE dbo.dim_Customer ( sk_Customer INT IDENTITY NOT NULL, CustomerSourceKey NVARCHAR(50) NOT NULL, CustomerName NVARCHAR(50) NOT NULL, InferredMember BIT NOT NULL ) |
代理键是整数类型,我们使用IDENTITY属性来自动分配插入行的序列号。当我们插入一行源键不存在的行时,InferredMember列设置为1。当我们在维度处理过程中从源系统中获得该行后,它将替换掉推理成员行,而InferredMember列的值会变成0。
现在我们来创建一个接受新建表类型作为参数并执行代理键查找和推理处理的存储过程:
| 以下是引用片段: CREATE PROCEDURE dbo.stp_GetCustomerSK @source_key_list SourceKeyList READONLY AS BEGIN INSERT INTO dbo.dim_Customer( CustomerSourceKey, CustomerName, InferredMember ) SELECT SourceKey, N'INFERRED', 1 FROM @source_key_list k LEFT JOIN dbo.dim_Customer c ON c.CustomerSourceKey = k.SourceKey WHERE sk_Customer IS NULL SELECT sk_Customer, CustomerSourceKey FROM dbo.dim_Customer c JOIN @source_key_list k ON k.SourceKey = c.CustomerSourceKey END GO |
表值参数必须被声明为READONLY。你不能对表值参数执行任何DML(即插入、更新、删除)。你职能在SELECT语句里引用它。存储过程把表值参数与客户维度连接起来,查找出任何还不存在的源键,然后插入这些键。然后存储过程再把表值参数与客户维度连接来返回含有源键及其对应代理键的结果集。
你可以通过查询sys.parameters来查看任何被声明为READONLY的参数:
| 以下是引用片段: SELECT object_id, name FROM sys.parameters WHERE is_readonly = 1 GO |
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- SQL Server 数据处理专题 (1899篇文章)
- SQL Server 索引和查询专题 (3392篇文章)
- SQL Server (1856篇文章)
- SQL Server安装配置 (117篇文章)
- SQL Server (1858篇文章)
- 用SQL语句删除重复记录的四种方法 (146次浏览)
- 在Win Server 2008运行 SQL Server 2008 (43次浏览)
- 讲解SQL Server数据库触发器的安全隐患 (41次浏览)
- SQL Server 2000和JDBC的融合实例 (28次浏览)
- 在SQL Server 2005中编写sp_lock系统存储过程 (28次浏览)
- SQL Server 2008企业版中的数据库加密 (26次浏览)
- SQL Server 2008开辟崭新数据平台 (24次浏览)
- SQL Server 2008数据库中的新数据类型 (21次浏览)
- 浅析SQL Server 2008的Change Data Capture功 (21次浏览)
- 轻松了解“SQL Server 2008”的报表服务 (21次浏览)



