[color=gray][/color]2) 对于两个表如果字段数不一样,但是有几个字段的结构一样时〔类似于父子关系〕,必须使用 INSERT INTO B(field1,field2) select A.field1,A.field2 from A;
1.用带参数的游标实现insert功能:
CREATE OR REPLACE PROCEDURE GET_DATA(
-- 参数列表:
n_task_id IN number, --任务编号
v_task_name IN varchar2, --任务名称
v_name IN varchar2 -- 名称
)
-----------------------------------------------
-- PROCEDURE名 :GET_DATA --
-- 処理内容 :从数据源表取得符合条件的的数据插入到目标数据表: --
-- 引数 :n_tas_id 任务ID, --
-- v_task_namek 任务名称, --
-- v_bdw_name 对数据源表限制条件:本地网名称 --
-----------------------------------------------
IS
--插入行数控制
i_count number(5);
--取数据游标:DATA_CUR(IN_NAME)
--参数:本地网名称:IN_NAME
CURSOR DATA_CUR(IN_NAME VARCHAR2) IS /**注意:参数的定义中不带精度**/
SELECT *
FROM GET_DATA_SRC A
WHERE A.NAME = IN_NAME;
BEGIN
--计数器,控制插入行数
i_count := 0;
--循环插入数据
FOR MYCUR IN DATA_CUR(v_name) LOOP
INSERT INTO ABC(
ROW_ID,
TASK_ID,
TASK_NAME,
GET_DATA_DT,
CUST_ID,
ASSIGN_FLAG,
DEAL_DATE
)VALUES(
SEQ_KD.NEXTVAL,
N_TASK_ID,
V_TASK_NAME,
SYSDATE,
MYCUR.CUST_ID,
'N',
NULL
);
--程序试用阶段,以后会删除satrt
i_count := i_count + 1;
IF i_count >100 THEN
COMMIT;
RETURN;
END IF;
--程序试用阶段,以后会删除end
END LOOP;
--数据commit,程序调试阶段避免大量数据,暂时关闭
--commit;
--------例外处理部分----------------------------
EXCEPTION
WHEN OTHERS THEN
rollback;
END SRBZ_GET_SRBZ_KD_SPEED;
/
2.使用语句拼接法实现insert功能:
注:2.1字符串常量的引号 2.2 变量的引号
CREATE OR REPLACE PROCEDURE ABC(
-- 参数列表:
task_id IN number, --任务编号
task_name IN varchar2, --任务名称
in_NAME IN varchar2 --名称
)
--------------------------- PROCEDURE名 :ABC
-- 処理内容 :从数据源表取得符合条件的的数据插入到目标数据表
-- 引数 :table_src 数据源表
-- table_to 数据插入目标表
-- in_bdw_name 对数据源表限制条件:本地网名称
---------------------------------------------
IS
--INSERT_STRING 动态生成的insert语句存放处
INSERT_STRING VARCHAR2(1000);
--数据源表存放处
tableSrc varchar2(500);
--数据插入目标表存放处
tableTarget varchar2(1000);
--数据目标表需要插入值的字段存放处
StrFields varchar2(1000);
BEGIN
--数据源表为:AAA
tableTarget := ' BBB ';
--数据来源
tableSrc := ' select seq_kd.nextval,sysdate,'||task_id||','''||task_name||''', '
||'A.* from AAA A'
||' WHERE A.value='||'''IP-VPDN'''
||'AND A.remark IS NULL';
--需要插入的字段
StrFields := '(ROW_ID,GET_DATA_DT,TASK_ID,TASK_NAME,COST_CTR,SERVICE_ID,'
||'SI_ADDR,SI_SERVER_ID)';
--生成insert语句
INSERT_STRING := 'INSERT INTO ' || tableTarget || StrFields || tableSrc ;
--执行insert语句
execute immediate INSERT_STRING;
--提交事务
commit;
--------例外处理部分-------------------------------------------------------
EXCEPTION
--异常的抛出
WHEN OTHERS THEN
--DBMS_OUTPUT.PUT_LINE('处理过程中出错,程序退出,未执行相关内务');
rollback;
END SRBZ_GET_SRBZ_KD_GSVPDN_FREE;
/
分享到:
相关推荐
### Oracle存储过程、游标、函数的详解 #### 一、概述 在Oracle数据库中,存储过程、游标和函数是非常重要的组成部分,它们为数据库管理提供了强大的编程能力。通过学习这些概念,我们可以更加灵活地管理和操作...
在存储过程中,select 某一字段时,后面必须紧跟 into,如果 select 整个记录,利用游标的话就另当别论了。在利用 select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no datafound"异常。在存储...
在存储过程中,变量声明是必不可少的,格式为: 变量名 类型(值范围); 例如: vs_msg VARCHAR2(4000); 变量 2 类型(值范围); 其中,vs_msg 是变量名,VARCHAR2(4000) 是变量的数据类型和值范围。 游标 ...
Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写包含一系列SQL语句和PL/SQL块的程序单元,这些程序单元可以在需要时执行,提高了数据处理的效率和应用程序的性能。在Java开发中,Oracle...
以下是对“oracle存储过程解锁”这一主题的深入解析。 ### 标题:“oracle存储过程解锁” #### 解析: 在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的SQL代码块,用于执行复杂的业务逻辑或数据处理...
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
游标是Oracle存储过程中的一个重要组成部分,用于处理查询结果集。文章中展示了如何声明游标、使用游标变量,以及如何使用for循环和Fetch语句来访问和处理游标中的数据。其中,声明游标的基本语法是CURSOR cursor_...
oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel oracle 存储过程导出excel
### Oracle存储过程 存储过程是在数据库中预编译的一组SQL语句,用于执行复杂的业务逻辑或数据操作。它们可以接受输入参数,执行一系列数据库操作,并返回结果。在Oracle中,存储过程使用PL/SQL编写,可以在数据库...
#### Oracle存储过程创建 首先,我们需要在Oracle数据库中创建一个存储过程。以下是一个示例存储过程`pkg_test`的创建脚本: ```sql CREATE OR REPLACE PACKAGE pkg_test AS TYPE myrctype IS REF CURSOR; ...
总的来说,"Oracle通过存储过程POST方式访问接口"涉及到数据库编程、网络通信和安全性等多个方面,需要综合运用PL/SQL和Oracle的网络工具。通过学习和实践,你可以构建出高效、安全的接口交互方案。
使用Spring的JdbcTemplate调用Oracle的存储过程
Delphi 中调用 Oracle 的存储过程返回数据集是指在 Delphi 应用程序中调用 Oracle 数据库中的存储过程,并将存储过程的返回结果集显示在 Delphi 应用程序中。这种方式可以将 Oracle 数据库中的数据实时同步到 Delphi...
oracle分页存储过程,oracle分页存储过程
Oracle存储过程unwrap解密工具主要用于处理Oracle数据库中的加密存储过程。在Oracle数据库系统中,为了保护敏感代码或数据,开发人员有时会选择对存储过程进行加密。然而,当需要查看、调试或恢复这些加密的存储过程...
- `OUT`参数类型表示该参数是输出参数,可以用来从存储过程中返回值。 - 使用`SELECT ... INTO ...`语句将查询结果赋值给输出参数。 #### 五、调用带输出参数的存储过程 同样,我们可以通过Java代码来调用这个带有...
oracle存储过程加密破解 0
### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...