数据仓库服务 GAUSSDB(DWS)-GaussDB(DWS)存储过程基本语句:定义变量
定义变量
介绍PL/SQL中变量的声明,以及该变量在代码中的作用域。
变量声明
变量声明语法请参见图1。
对以上语法格式的解释如下:
- variable_name,为变量名。
- type,为变量类型。
- value,是该变量的初始值(如果不给定初始值,则初始为NULL)。value也可以是表达式。
示例
1 2 3 4 5 6 |
DECLARE emp_id INTEGER := 7788; --定义变量并赋值 BEGIN emp_id := 5*7784; --变量赋值 END; / |
变量类型除了支持基本类型,还可使用%TYPE和%ROWTYPE去声明一些与其他表字段或表结构本身相关的变量。
%TYPE属性
%TYPE主要用于声明某个与其他变量类型(例如,表中某列的类型)相同的变量。假如想定义一个my_name变量,它的变量类型与employee的firstname类型相同,可使用如下定义:
my_name employee.firstname%TYPE
这样定义可以带来两个好处,首先,不用预先知道employee 表的firstname类型具体是什么。其次,即使之后firstname类型有了变化,也不需要再次修改my_name的类型。
%ROWTYPE属性
%ROWTYPE属性主要用于对一组数据的类型声明,用于存储表中的一行数据,或从游标匹配的结果。假如需要一组数据,该组数据的字段名称与字段类型都与employee表相同。可以通过如下定义:
my_employee employee%ROWTYPE
多个CN的环境下,存储过程中无法声明临时表的%ROWTYPE及%TYPE属性。因为临时表仅在当前session有效,在编译阶段其他CN无法看到当前CN的临时表。故多个CN的环境下,会提示该临时表不存在。
变量作用域
变量的作用域表示变量在代码块中的可访问性和可用性。只有在它的作用域内,变量才有效。
- 变量必须在declare部分声明,即必须建立BEGIN-END块。块结构也强制变量必须先声明后使用,即变量在过程内有不同作用域、不同的生存期。
- 同一变量可以在不同的作用域内定义多次,内层的定义会覆盖外层的定义。
- 在外部块定义的变量,可以在嵌套块中使用。但外部块不能访问嵌套块中的变量。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
DECLARE emp_id INTEGER :=7788; --定义变量并赋值 outer_var INTEGER :=6688; --定义变量并赋值 BEGIN DECLARE emp_id INTEGER :=7799; --定义变量并赋值 inner_var INTEGER :=6688; --定义变量并赋值 BEGIN dbms_output.put_line('inner emp_id ='||emp_id); --显示值为7799 dbms_output.put_line('outer_var ='||outer_var); --引用外部块的变量 END; dbms_output.put_line('outer emp_id ='||emp_id); --显示值为7788 END; / |
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- GaussDB数据库如何定义变量_GaussDB怎么样_高斯数据库如何定义变量
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- 数据库监控DMS_数据库智能运维_了解Auto Pilot_DMS_DWS节点监控
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- GaussDB(DWS)服务_什么是IoT数仓_如何使用IoT数仓