ORACLE中声明变量:define variable declare
副标题[/!--empirenews.page--]
在sqlplus 环境中,声明变量的关键字:define variable declare 一、define关键字(host变量) host变量的作用是一个替换作用,是主机环境与oracle进行交互的变量,定义host变量时必须同时指定变量名和变量的值,定义变量不可以指定数据类型,define定义的变量默认其数据类型都是char。该变量只在当前session起作用 1、定义语法: define var_name =value >查看已定义的所有变量及其值:define SQL> define SQL> define num 3、变量的引用 定义变量后,可在sql语句中直接使用,需要在变量前加“&”符号 ? ? 4、关闭打开define变量定义。 SQL> set define on SQL> set define off; 上述是显示的定义变量方式,另一种是隐式定义的临时变量,临时变量只是当前sql语句可用。 SQL> select * from user_tables where rownum=&var; SQL> select * from user_tables where rownum=&var; variable定义的变量即绑定变量,一般用于存储过程有out类型的参数时。定义时需要定于变量的数据数据类型,支持的数据类型如下。同define一样,只在当前会话中有效。 SQL> help variable VARIABLE Declares a bind variable that can be referenced in PL/SQL,or VAR[IABLE] [variable [type]] where type represents one of the following: NUMBER CHAR CHAR (n [CHAR|BYTE]) ? var[iable] var_name type; 2、引用 引用var定义变量,需要在前面加“:”。 3、var命令,同define。 4、var变量的初始化。 使用存储过程初始化、函数初始化。 call命令调用函数把结果传给绑定变量, 函数初始化:call function(参数列表) into :绑定变量1 存储过程初始化:exec pro_name(var_name=>:绑定变量); 三、declare--声明部分 plsql程序块的声明部分,内部变量,只在当前程序块有效。常量、变量、游标的声明都在declare部分。 ? Oracle定义变量的方式有3种: 声明并使用变量 DECLARE v_result VARCHAR2(30) ; -- 此处没有赋值 BEGIN DBMS_OUTPUT.put_line(‘v_result的内容〖‘ || v_result || ‘〗‘) ; END ; / 输出结果为空 变量声明语法: 变量名称 [constant] 类型 [not null] [:=value]; 语句解析: ?? 示例:定义变量 v_resultA NUMBER := 100 ; -- 定义一个变量同时赋值 v_resultB NUMBER ; -- 定义一个变量没有设置内容 BEGIN v_resultb := 30 ; -- 没有区分大小写 DBMS_OUTPUT.put_line(‘计算的结果是:‘ || (v_resultA + v_resultB) ) ; END ; / 运行结果:130 定义非空变量: v_resultA NUMBER NOT NULL := 100 ; -- 定义一个非空变量v_resultA,同时赋值 BEGIN DBMS_OUTPUT.put_line(‘v_resultA变量内容:‘ || (v_resultA) ) ; END ; / 运行结果:v_resultA变量内容:100 定义常量: v_resultA CONSTANT NUMBER NOT NULL := 100 ; -- 定义一个常量同时赋值 BEGIN DBMS_OUTPUT.put_line(‘v_resultA常量内容:‘ || (v_resultA) ) ; END ; / 运行结果:v_resultA变量内容:100 使用%TYPE声明变量类型 示例:使用"%TYPE"定义变量 DECLARE v_eno emp.empno%TYPE ; -- 与empno类型相同 v_ename emp.ename%TYPE ; -- 与ename类型相同 BEGIN DBMS_OUTPUT.put_line(‘请输入雇员编号:‘) ; v_eno := &empno ; -- 由键盘输入雇员编号 SELECT ename INTO v_ename FROM emp WHERE empno= v_eno ; DBMS_OUTPUT.put_line(‘编号为:‘ || v_eno || ‘雇员的名字为:‘|| v_ename) ; END ; / (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |