oracle如何使用变量,oracle变量定义及使用-成都快上网建站

oracle如何使用变量,oracle变量定义及使用

如何设置Oracle的环境变量

windows下安装完数据库软件,创建完数据库后一般都会自动设置好oracle数据库相关的环境变量,多个库的时候,需要指定oracle_sid,在cmd下执行:

创新互联建站成立于2013年,我们提供高端重庆网站建设公司成都网站制作成都网站设计、网站定制、全网营销推广微信小程序开发、微信公众号开发、seo优化排名服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为成都iso认证企业提供源源不断的流量和订单咨询。

set oracle_sid=sid

再执行sqlplus命令即可连接到正确的数据库。(环境变量名称不区分大小写)

其他系统比如linux或者unix一般使用如下命令设置:

export ORACLE_SID=sid

再执行sqlplus命令即可连接到正确的数据库。(环境变量名称区分大小写)

要想下次登录有效需要设置用户相关的profile文件,以最常见的bash为例,需要修改

用户根目录下的.bash_profile文件

vi ~/.bash_profile

修改以及需要新加相关的环境变量,一般常用的有

ORACLE_HOME

ORACLE_BASE

PATH

LD_LIBRARY_PATH

ORACLE_SID

alias s='sqlplus / as sysdba'

oracle pl/sql中如何使用变量

定义并使用变量

PL/SQL有四种类型:标量类型,复合类型,引用类型 (reference),LOB(Large Obejct)类型

一、标量类型

最常用的就是标量类型,是指只能存放单个数值的变量,包括数字类型、字符类型、日期类型和布尔类型,每种类型又包含相应的子类型。

常量标量类型如下:

VARCHAR2 (n) , CHAR (n), NUMBER (p,s),DATE, TIMESTAMP , LONG , LONG RAW ,BOOLEAN,BINARY_INTEGER(仅 PL / SQL使用),BINARY_FLOAT和BINARY_DOUBLE(10g新引入的)

定义标量:

identifier [CONSTANT] datatype [NOT NULL] [:=| DEFAULT expr]

使用标量需要注意的是=号被:=取代,与delphi一样的赋值符号@_@

例子:

v_name VARCHAR2 ( 10 );

v_rate CONSTANTS NUMBER ( 4 , 2 ) : = 3.04 ;

为了防止定义的变量类型与表中的字段类型不一致,可以使用%TYPE来定义:

v_name employee.name % TYPE;

如上面所示,v_name的类型就与表 employee中的name字段类型一样!!

二、复合变量:

用于存放多个值的变量称为复合变量,包括PL/SQL记录,PL/SQL表,嵌套表和VARRAY四种类型

1.PL/SQL记录

类似于C/C++中的结构概念:

declare

TYPE employee_record is RECORD(

id employee.id % TYPE,

name employee.name % TYPE,

email employee.email % TYPE);

em_record employee_record;

begin

select id,name,email into em_record from employee where name = name;

dbms_output.put_line( ' 雇员名: ' || em_record.name || ' 雇员ID: ' || em_record.id);

end ;

2.PL/SQL表,类似于数组概念,不同的是PL/SQL表允许负值下标,而且没有上下限,如:

declare

TYPE employee_table is table of employee.name % TYPE index by BINaRY_INTEGER;

em_table employee_table;

begin

select name into em_table( - 1 ) from employee where name = name;

dbms_output.put_line( ' 雇员名: ' || em_table( - 1 ));

end ;

3.嵌套表,与PL/SQL 表相似,不同的是嵌套表可以做表列的数据类型,而PL/SQL表不能,使用嵌套表作为表列时,必须为其指定专门的存储表,如:

create or replace TYPE emp_type as OBJECT(name VARCHAR2 ( 10 ),salary NUMBER ( 6 , 2 ),hiredate DATE);

CREATE OR REPLACE TYPE emp_array IS TABLE OF emp_type;

CREATE TABLE department(

deptno NUMBER ( 2 ),dname VARCHAR2 ( 10 ),

employee emp_array)NESTED TABLE employee STORE as employee_dept;

4.VARRAY(变长数组),与嵌套表相似,也可以做为表列的数据类型,但是嵌套表没有个数限制,而VARRAY有个数限制,如:

CREATE TYPE TEST_ARRAY IS VARRAY(20) OF emp_type;

三、引用变量(reference)

类似于C++中的指针或者JAVA中引用的概念,用于存放数值指针的变量,使用此变量,可以使得应用程序共享相同对象,降低占用空间。此类有两种类型:游标(REF CURSOR)和对象类型(REF OBJECT)

1.REF CURSOR,定义时同时指定SELECT语句的游标称为显式或者静态游标,在打开时才指定SELECT语句的游标称为动态游标,如:

DECLARE

TYPE c1 IS REF CURSOR ;

emp_cursor c1;

v_name employee.name % TYPE;

v_sal employee.salary % TYPE;

begin

open emp_cursor for

SELECT name,salary FROM EMPLOYEE ;

LOOP

FETCH emp_cursor INTO v_name,v_sal;

EXIT WHEN emp_cursor % NOTFOUND;

dbms_output.put_line(v_name);

END LOOP;

close emp_cursor;

end ;

2.REF OBJECT,与JAVA的引用概念相同,存储的是指向对象的指针

四、LOB类型

LOB类型是指用于存储大批量数据的变量,包括内部的3种(CLOB,BLOB,NCLOB)和外部LOB(BFILE)。

CLOB,NCLOB用于存储大量的字符数据。

BLOB用于存储大批量二进制数据(如图象)。

BFILE则存储指向OS文件的指针。

oracle 如何使用绑定变量

你这个写法不对,应该是直接写 A.containerowner='APL'

而不能写:p_containerowner,这种写法只有在动态sql中才能用

比如:

execute immediate 'begin insert into test07 values(:x,:x:y:x); end;'

using a,b;

a和b的值是预先定义好的,直接填充占位符x y

Oracle 存储过程的动态变量如何使用

实现思路:

第一步:先定义一个字符串,这个字符串SQL是由动态变量和其他的sql语句成分拼接组成。

第二步:直接执行 execute immediate SQL;

备注:以上方法是oracle提供的动态执行方法语句,直接使用就可以。

VAR_DYNAMIC_SQL := 'INSERT INTO RP_COMFIRMED_EVENT_DETAIL( EVENT_ID,--ID TRANS_TIME,--交易时间 TRANS_TYPE,--交易类型 TRANS_PROVINCE,--开户省份 CCE_CSTNO,--客户号 CCE_CERTTYPE,--证件类型 CCE_CERTNO,--证件号 CCE_AMT,--交易金额 CCE_RISK_SCORE,--不处理的风险分值 CCE_PAYEE_ACC,--付款人账号 CCE_PAYEE_NAME,--付款人姓名 CCE_REC_NODE,--收款人开户行 CCE_REC_ACC,--收款人账号 CCE_REC_NAME,--收款人姓名 RULE_NAME,--规则名称 CCE_RULE_NOTE,--规则描述 SCORE_RANGE--处理后的风险分值 )select EVENT_ID, SYS_CREATION_DATE, GET_NAME_BY_CODE(GET_TOTAL_EVENT_TYPE(T1.EVENT_TYPE,T1.USER_DEFINED_EVENT_TYPE),''eventType'') AS TRANS_TYPE, -- get_province(IP_COUNTRY,IP_CITY) AS CCE_TRANSTYPE, get_vale_from_cd_p('||get_vale_from_cd1('13','5')||'),--开户省份为自定义字段 USER_ID, '||get_vale_from_cd1('4','4')||',--证件类型为自定义字段 '||get_vale_from_cd1('7','4')||',--证件号为自定义字段 要转换成动态SQL GET_AMT_BY_CURRENCY(AMOUNT_ORIGINAL,AMOUNT_CURRENCY),--通过汇率和币种转换 RISK_SCORE, USER_ACCT_NUMBER, '||get_vale_from_cd_g1(get_vale_from_cd_al)||',--付款人姓名 '||get_vale_from_cd1('11','5')||',--收款人开户行 自定义字段 需转换成动态SQL EXT_ACCT_NUMBER, EXT_ACCT_OWNER_NAME, NVL(POLICY_RULE_ID,''FALLBACK_RULE'') AS RULE_NAME, SUBSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),INSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),''-'')+1),--描述 GET_SCORE_RANGE(RISK_SCORE) AS RISK_SCORE_RANGE FROM EVENT_LOG_REALTIME T1))'; execute immediate VAR_DYNAMIC_SQL;


分享名称:oracle如何使用变量,oracle变量定义及使用
文章URL:http://kswjz.com/article/dsdpcgc.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流