4.PL_SQL——变量声明以及初始化,字符串分隔符
admin
2023-05-14 00:41:58
0

一、变量的作用

         PL/SQL既然是编程语言,就必然会用到变量。和其他程序语言类似,PL/SQL中的变量主要有以下作用:1. 用来临时的存放数据2.用来操作数据;3. 重复使用数据。

 

例如上一节中举的例子,就用到了变量:

   DECLARE

       v_fnameVARCHAR2(20);

                -- 声明变量

   BEGIN

       SELECT first_name

      INTO v_fname

                -- SELECT语句查询到的数据存放到变量v_fname

       FROM employees

       WHERE employee_id = 100;

       DBMS_OUTPUT.PUT_LINE('The result is ' || v_fname);

                -- 使用存放在变量v_fname中的数据

   END;

4.PL_SQL——变量声明以及初始化,字符串分隔符

二、变量的命名规则

          PL/SQL中命名规则主要有:

1. 必须以字母开头;

                2. 可以包含字母和数字;

                3. 可以包含特殊字符,如$, _#。注意, _可以使用,但$#最好尽量不用,因为在其他编程语言中很少允许使用$#,为了养成良好的编程习惯,最好不要使用这两个符号;

                4. 变量的长度最好不要超过30个字符;

                5. 不能使用关键字和保留字。

 

三、变量的使用方法

                PL/SQL中变量的用法如下:

                1. 变量需要在DECLARE部分定义;变量可以在DECLARE部分初始化,也可以不初始化,视程序需要而定。

                2. 在执行部分,即BEGIN部分赋新值和使用;

                3. 可以作为参数用在子程序中;

                4. 也可以用来存放程序的输出结果。

 

下面来结合之前用到的例子,演示变量的用法:

SQL> edit

   

DECLARE
      v_fname VARCHAR2(20);
--声明了变量v_fname,但没有初始化
   BEGIN
      SELECT first_name
      INTO v_fname
-- 变量v_fnam 用来存放SELECT语句的查询结果
      FROM employees
      WHERE employee_id = 100;
      DBMS_OUTPUT.PUT_LINE('Theresult is ' || v_fname);
-- 变量v_fnam作为参数被传递到方法中
   END;
   /
The result is Steven
PL/SQL procedure successfullycompleted.


四、声明和初始化变量

                变量需要声明,初始化则可以在声明时进行,也可以不在此时进行,但是如果声明时定义为not null的情况下,就必须初始化才能使用。

                变量声明的格式为:

         Identifier [CONSTANT]datatype [NOT NULL] [ := | DEFAULT expression ]

                这里中括号中的内容都是可选项,具体含义如下:

1. CONSTANT表示常量,一旦定义为常量,则不能在为该变量赋其他的值了;

2. 如果定义了[NOT NULL],则该变量必须赋值;

3. PL/SQL中赋值使用的是 :=,初始化时也可以使用DEFAULT来定义默认值。

                来看几个具体的例子:

 

        DECLARE
            v_hiredate  DATA;
             --此处只声明没有初始化
            v_deptno    NUMBER(2) NOT NULL := 10;
             -- 声明时定义为 NOT NULL,所以必须为其初始化,赋值为10,也可以写成
             -- v_deptno   NUMBER(2) NOT NULL DEFUALT 10;
            v_location   VARCHAR2(13) := ‘atlanta’
             -- 声明的的同时也初始化
            c_comm     CONSTANT  NUMBER  := 1400;
             --声明时定义为常量,意味着以后不能再为其赋其他的值了


下面来看两个例子:

1.

SQL> DECLARE

      v_myName VARCHAR(20);
                -- 只声明,没有初始化
   BEGIN
      DBMS_OUTPUT.PUT_LINE('My name is: ' || v_myName);
                -- 使用的是未初始化的变量v_myName
      v_myName := 'John';
                -- 为变量v_myName 赋值
      DBMS_OUTPUT.PUT_LINE('My name is: ' || v_myName);
                -- 使用的是赋值后的变量
  END;

SQL> /

Myname is:
                -- 由于没有初始化,故没有结果
Myname is: John
                -- 赋值后使用变量,能显示该变量的值
PL/SQLprocedure successfully completed.

 

2.

SQL>

   DECLARE
      v_myName VARCHAR2(20) := 'John';
                -- 声明变量的同时为其初始化
   BEGIN
      DBMS_OUTPUT.PUT_LINE('My name is: ' || v_myname);
                -- 注意,这里故意将变量写成小写,以验证PL/SQL中不区分大小写
   END;
   /
Myname is: John
PL/SQLprocedure successfully completed.

 

五、字符串分隔符

         在打印输出结果时经常会用到引号,但是单引号有时候也作为分割符使用,如I’m这种情况,为了避免混淆,PL/SQL中使用了q来进行分隔符的引用:q表示quotes,加上单引号‘,后面接任意成对的符号,都可以起到引用的单引号作用。看下面这个例子:

SQL> edit

   DECLARE
      v_event VARCHAR2(15);
   BEGIN
      v_event := q'!Father's day!';
       -- 这里使用q’,然后加上成对的!,就可以避免把分隔符’当成单引号
      DBMS_OUTPUT.PUT_LINE('3rd Sunday in June is :' || v_event);
      v_event := q'[Mother's day]';
       -- 成对的特殊符号都可以,这里使用的是一对中括号[]
      DBMS_OUTPUT.PUT_LINE('2nd Sunday in May is :' || v_event);
   END;

SQL> /

3rdSunday in June is :Father's day
2ndSunday in May is :Mother's day
PL/SQLprocedure successfully completed.


相关内容

热门资讯

特朗普访华工作午餐菜单曝光 美国总统特朗普5月15日访华最后一天午餐都吃了什么?美国有线电视新闻网(CNN)5月15日报道,特朗...
香蕉复仇、蓝莓出轨?警惕水果短... “香蕉女王复仇”“蓝莓出轨草莓”……最近,一群“成精”的水果席卷短视频平台。这些都来自“水果AI短剧...
风声|武汉大学取消公众预约制度... 作者丨熊丙奇教育学者近日,武汉大学正式取消社会公众进校预约制度,无需任何预约,仅凭本人身份证即可步行...
中美是否就稀土供应达成新谅解?... 澎湃新闻记者 杨文钦 朱郑勇5月15日,外交部发言人郭嘉昆主持例行记者会。《纽约时报》记者提问,美中...
央视拿下世界杯版权 104场比... 央视拿下世界杯版权  【央视拿下世界杯版权】2026年5月15日,这个注定被载入中国体育版权史的日子...
中美是否在农业方面达成协议?外... 澎湃新闻记者 杨文钦 朱郑勇5月15日,外交部发言人郭嘉昆主持例行记者会。《纽约时报》记者提问,请问...
成都引众北斗授时服务器:解决电... 毫秒级误差,就可能让电网保护误动、5G基站干扰、金融交易错序。 在电力、通信、金融等关键基础设施中,...
京鲁牵手,共创“1+1>... “2026年央视春晚,用手灵活盘核桃的机器人,是我们公司的产品。目前,我们的机器人能在复杂环境中完成...
全国投资人,“抢夺”深圳大厂高... 白手起家的新故事。 来源:每日人物 文:谢韫力 编辑:张轻松 过去一年,北京、上海的投资人开始频繁出...
乐山一商场推行“宠物友好”,曝... 近日,四川乐山网友反映,当地世豪广场高调打造“宠物友好”商圈、投放相关宣传,却放任狗不拴绳以及狗上桌...