oracle存储过程中如何对一个变量累加赋值 最好有个例子
1、首先打开oracle数据库,如下图所示。
主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设公司、程序开发、微网站、小程序设计等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的做网站、成都网站建设、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体,具备承接不同规模与类型的建设项目的能力。
2、在Oracle中,对于函数的变量赋值,通常有三种方法来进行处理,直接赋值的方法,可以在声明变量的时候直接给变量进行赋值。
3、其次,可以使用SELECT语句对变量进行赋值,主要是SELECT INTO语句,如下代码示例,将变量v_minvar赋予Min(t.sal)的值。
4、最后就是动态SQL语句赋值了,如下代码。
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中表名能否用变量?怎么用
呵呵 我只能说介绍一下我的几点经验。。。
表名是不可以使用变量的。。。
我碰到这种情况的话,一般我先定义一个VARCHAR2的变量,例如v_sql,然后把DDL或者DDM语句写进去。仿照你的情况。。
v_tablename:='ok'||to_char(trunc(sysdate),'yyyymm');
v_sql:='select * from '||v_tablename||';';
然后通过对v_tablename 的动态赋值,再执行。。
execute immediate v_sql;
类似的,
OPEN cur_out FOR v_sql;
值得说明的是要注意空格。。
望指正、。。。
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的环境变量
SQLPLUS命令的处理程序一般是在Oracle安装目录下的$ORACLE_HOME\BIN目录中(如作者本机的目录为D:\Program File\oracle\product\10.2.0\db_1\BIN),这里面应该有一个名叫sqlplus.exe的可执行文件。如果没有这个文件,说明安装的Oracle数据库软件是有问题的。
1.如果存在sqlplus.exe文件,可用鼠标选择【我的电脑】,然后右击,从弹出的快捷菜单中选择【属性】命令,在弹出的界面中选择【高级】选项卡。
2.单击【环境变量】按钮,将弹出对话框。
3.选择上图中深蓝色的Path这一行,然后单击【编辑】按钮,将会新弹出如图2-14所示的对话框。在Path的【变量值】文本框中的最后面先加入一个":"分号,然后在分号后面加入刚才所说的sqlplus.exe文件的目录路径,即"D:\ProgramFile\oracle\ product\10.2.0\db_1\BIN",
4.单击【确定】按钮。这样Oracle的SQLPLUS的环境变量则可以设置好了,在DOS命令窗口中可以识别SQLPLUS相关命令了。
Oracle数据库实例名:是用于和操作系统进行联系的标识,即数据库和操作系统之间的交换是通过数据库实例名来体现的。
文章名称:python爬虫函数存储,爬虫数据保存
本文来源:http://lswzjz.com/article/hsioig.html