存储过程中,存在两种变量,一种是写在as前,如图1的@i;一种是写在as后,如图1的@date。
图1 两种变量的位置我们常在Job,或者说作业中,定时执行[PROC_DW_TableName]的时候,写上代码“ exec [PROC_DW_TableName] -12”,-12就是这里的@i会接受到的参数值。@i会用在哪里呢?比如:
图2 @i的使用至于@date,是我们在存储过程中需要使用的参数,其定义一般也在存储过程Begin之后,利用"set @date = "对该变量进行赋值。
总结一下,@i是执行存储过程时才赋值的参数,而@date是存储过程内部赋值的参数。
谈一谈变量表。
有时候我们需要在某种特定条件下,需要使用极少量的维度字段对照转换表,但为此新建一个表又觉得过于麻烦,而且不利于数仓建设维护,此时我们可以利用变量表来建设。
如上文中的@i和@date,我们在定义的时候都会为变量确认数据类型,如int和date。而变量表@t,我们为其赋的类型就是table。
图3 变量表举例使用变量表的时候,和我们使用常规表以及临时表的时候并没有什么区别。
若在存储过程中使用,通过声明的declare,我们也应该能确认,应该放在as前还是as后了吧。
网友评论