1. 首页
  2. IT资讯

PLSQL Language Reference-PL/SQL语言基础-词汇单元-声明

声明

声明为指定类型的值分配存储空间,并命名该存储空间,这样才能引用它。

必须在引用对象之前声明它。

声明可以出现在块、子程序和包的声明部分。

变量声明

变量的声明需要指定变量的名称和数据类型。对于大多数的数据类型,变量声明也可以指定初始值。

变量名必须是有效的用户定义的标识符。

数据类型可以是任何PL/SQL数据类型。PL/SQL数据类型包括SQL数据类型。

数据类型可以是scalar(标量的)(不包含内部成员的)也可以是复合的(包含内部成员的)

声明变量

DECLARE

part_number NUMBER(6); — SQL数据类型

part_name VARCHAR2(20); — SQL数据类型

in_stock BOOLEAN; — PL/SQL数据类型

part_price NUMBER(6,2); — SQL数据类型

part_description VARCHAR2(50);— SQL数据类型

BEGIN

NULL;

END;

常量声明

常量的声明相对于变量有2个附加要求:关键字CONSTANT和常量的初始值。(常量的初始值是它的永久的值)

DECLARE

credit_limit CONSTANT REAL := 5000.00; — SQL数据类型

max_days_in_year CONSTANT INTEGER := 366; — SQL数据类型

urban_legend CONSTANT BOOLEAN := FALSE; — PL/SQL数据类型

BEGIN

NULL;

END;

变量和常量的初始值

在变量的声明中初始值是可选的,除非指定了NOT NULL约束。

在常量的声明中初始值是必须的。

如果声明是在一个块或子程序中,则每当程序执行到块或子程序时,初始值都被赋值给变量或常量;如果声明是在包规范中,则这个初始值在每个会话中被赋值一次。(无论是私有还是公有的)

进行初始赋值使用:=DEFAULT关键字,后面跟一个表达式。表达式中可以包含前面声明的常量或已经被初始化的变量。

— 11g12_02_11.tst

DECLARE

hours_worked INTEGER := 40;

employee_count INTEGER := 0;

pi CONSTANT REAL := 3.14159;

radius REAL := 1;

area REAL := (pi * radius**2);

BEGIN

NULL;

END;

DECLARE

counter INTEGER; 默认的初始值为NULL

BEGIN

counter := counter + 1; — NULL + 1 仍然是NULL

IF counter IS NULL THEN

DBMS_OUTPUT.PUT_LINE(‘counter = NULL.’);

END IF;

END; PLSQL Language Reference-PL/SQL语言基础-词汇单元-声明

非空约束

可以将NOT NULL约束施加于scalar变量或常量上。NOT NULL约束可以防止给它们赋NULL值。成员可以隐式地(从它的数据类型获得)或显式地获得NOT NULL约束。

DECLARE

显式指定NOT NULL约束

acct_id INTEGER(4) NOT NULL := 9999;

隐式地从相应的数据类型获得NOT NULL约束

a NATURALN := 9999;

b POSITIVEN := 9999;

c SIMPLE_INTEGER := 9999;

BEGIN

NULL;

END;

PL/SQL把任何长度为0的字符串看作是NULL,包括字符函数和BOOLEAN表达式的返回值。

DECLARE

null_string VARCHAR2(80) := TO_CHAR();

address VARCHAR2(80);

zip_code VARCHAR2(80) := SUBSTR(address, 25, 0);

name VARCHAR2(80);

valid BOOLEAN := (name != );

BEGIN

IF null_string IS NULL THEN

DBMS_OUTPUT.PUT_LINE(‘null_string = NULL’);

END IF;

IF address IS NULL THEN

DBMS_OUTPUT.PUT_LINE(‘address = NULL’);

END IF;

IF zip_code IS NULL THEN

DBMS_OUTPUT.PUT_LINE(‘zip_code = NULL’);

END IF;

IF name IS NULL THEN

DBMS_OUTPUT.PUT_LINE(‘name = NULL’);

END IF;

IF valid IS NULL THEN

DBMS_OUTPUT.PUT_LINE(‘valid = NULL’);

END IF;

END; PLSQL Language Reference-PL/SQL语言基础-词汇单元-声明

%type属性

可以用来声明与先前声明的变量或列具有相同数据类型的数据元素,而不需要知道具体是什么类型。

如果被引用的成员改变了,则声明的成员随之改变。

引用成员 被引用成员%TYPE;

引用成员从被引用成员继承:

n 数据类型和大小

n 约束(除非被引用成员是列)

引用成员不继承被引用成员的初始值。因此如果引用成员被指定或继承了NOT NULL约束,就必须为它指定初始值。

该属性在声明变量保存数据库值的时候非常有用。

变量名 表名.列名%TYPE;

DECLARE

–employees.last_nameNOT NULL约束,但不会继承

surname employees.last_name%TYPE;

BEGIN

不会继承被值

DBMS_OUTPUT.PUT_LINE(‘surname=’ || surname);

END; PLSQL Language Reference-PL/SQL语言基础-词汇单元-声明

DECLARE

name VARCHAR(25) NOT NULL := ‘Smith’;

继承了nameNOT NULL约束

surname name%TYPE := ‘Jones’;

BEGIN

DBMS_OUTPUT.PUT_LINE(‘name=’ || name);

DBMS_OUTPUT.PUT_LINE(‘surname=’ || surname);

END; PLSQL Language Reference-PL/SQL语言基础-词汇单元-声明

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1102573/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/194509.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code