PL/SQL中,declare定义变量和variable定义变量的区别?

Advertisement

用declare声明的变量作用在block中。
variable是sqlplus中定义变量的命令。他定义的变量在一个sqlplus连接中有效。
SQL> show user
USER 为"YANGTK"
SQL> var
SP2-0568: 未说明结合变量。
SQL> var test number
SQL> var
变量 test
数据类型 NUMBER
SQL> conn / as sysdba
已连接。
SQL> show user
USER 为"SYS"
SQL> var
变量 test
数据类型 NUMBER

SQL>

--------------------------------------------------------------

variable相当于一个sql*plus环境的全局变量,declare里定义的是pl/sql中的局部变量。

Similar Posts:

  • Oracle PL/SQL中如何使用%TYPE和%ROWTYPE 转载自(王朝网络 wangchao.net.cn)

    Oracle PL/SQL中如何使用%TYPE和%ROWTYPE 1. 使用%TYPE 在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据.在这种情况下,变量应该拥有与表列相同的类型.例如,students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量: DECLARE v_FirstName VARCHAR2(20); 但是如果first_name列的定义改变了会发生什么(比如说表改变了,first_name现在的类型变为VARCHAR2

  • pl/sql中的exception

    1.异常的优点 如果没有异常,在程序中,应当检查每个命令的成功还是失败,如 BEGIN SELECT ... -- check for 'no data found' error SELECT ... -- check for 'no data found' error SELECT ... -- check for 'no data found' error 这种实现的方法缺点在于错误处理没有与正常处理分开,可读性差,使用异常,可以方便处理错误,而且异常处理程序与正常的事务逻辑分开,提高了可读

  • 源码-PL/SQL从入门到精通-第三章-变量和类型-Part 1

    代码如下: --第三章开始 --代码3.1 变量定义示例 DECLARE v_empname VARCHAR2 (20); --定义员工名称变量 v_deptname VARCHAR2 (20); --定义部门名称变量 v_hiredate DATE NOT NULL := SYSDATE; --定义入职日期变量 v_empno INT NOT NULL DEFAULT 7369;--变量员工编码变量 BEGIN NULL; --不执行任何代码 END; --如果不为变量赋初始值,结果为null

  • PL/SQL 中的select ..into.. 以及 游标(Cursor)

    转:PL/SQL 中的select ..into.. 以及 游标(Cursor) Select empno, ename from emp;返回的是多于一条数据, 这个是肯定的.但是我们声明两个变量来依次获得每条数据的话, 我们只能获得一条记录,因为他们不是数组. 这种不匹配的现象在电子线路中类似于阻抗不匹配. 如果只是检索一条数据,那么我们可以用 declare var_empno number(10); var_ename varchar2(32); begin select empno ,

  • PL/SQL中存储过程int和out的用法

    PL/SQL中存储过程int和out的用法 一 介绍 过程和函数中的in和out (1)一般来讲,过程和函数的区别在于函数可以有一个返回值:而过程没有返回值. (2)但过程和函数都可以通过out指定一个或多个输出参数.我们可以利用out参数,在过程和函数中实现返回多个值. 二 int和out的使用举例 1.Int输入和out输入和输出一个值 create or replace procedure updateSal(emp_no in number,empsal out number) as e

  • PL/SQL 中的SQL语句

    例如: 普遍的SQL语句: update book set bookname='sssss' where bookId=1; 在PL/SQL 中执行: declare            v_bookId number;        begin           v_bookId :=1;           update book set bookname='sssss' where bookId=v_bookId;                  end; 1,select 在PL/

  • PL/SQL中如何让程序每隔几秒插入一条数据

    在编写ORACLE PL/SQL中,如果需要程序执行中暂停几秒钟再继续执行,可以通过oracle内置的dbms_lock.sleep来实现,不过dbms_lock包需要用户自己安装. [[email protected] ~]# su - oracle [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon May 25 16:36:12 2015 Copyright (c) 1982

  • PL/SQL中使用EXISTS:使用LOOP循环替代或者SELECT实现类似的功能:

    EXISTS 指定一个子查询,用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False,检测行的存在. 语法:EXISTS subquery.参数 subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字).结果类型为 Boolean,如果子查询包含行,则返回 TRUE. 上述的功能在T-SQL中可以直接使用,但是在PL/SQL中,会出现如下的问题: 1 BEGIN2 IF EXISTS(SELECT *

  • PL/SQL中类似break 和 continue的实现

    在如C/C++,Java编程语言的循环控制结构中,都有break和continue关键字可以灵活的控制循环体如何结束和跳出本次循环.但是PL/SQL本身是不具备这种关键字的,但是却可以利用一些方法实现类似的功能. PL/SQL中的循环控制结构常用的有如下几种: LOOP sql statement...EXIT WHEN CONDITION ... END LOOP; WHILE CONDITION LOOP sql statement.... END LOOP; FOR loop_index

  • Pl/SQL 中的 SPLIT 函数

    Pl/SQL 中的 SPLIT 函数 据我了解,PL/SQL 中没有 split 函数,需要自己写. 代码: create or replace type type_split as table of varchar2(50); --创建一个 type ,如果为了使split函数具有通用性,请将其size 设大些. --创建function create or replace function split ( p_list varchar2, p_sep varchar2 := ',' ) re

Tags: