Oracle存储过程之数据库中获取数据实例
怎样才能将在表A取得的数据插入另一个表B中?
(1)对于表A和表B两个表结构完全相同的话〔字段个数,相应字段的类型等等〕,可以使用
insert INTO B select * FROM A;
insert INTO B(field1,field2,field3) select A.field1,A.field2,A.field3 from A;
(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
);
(1)对于表A和表B两个表结构完全相同的话〔字段个数,相应字段的类型等等〕,可以使用
insert INTO B select * FROM A;
insert INTO B(field1,field2,field3) select A.field1,A.field2,A.field3 from A;
(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
);
免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。
热门教程
新手学oracle常见疑问2019-12-05
oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解2019-01-22
oracle case when 语句的用法详解2019-02-07
ORACLE性能优化之SQL语句优化2021-03-10
oracle中使用group by优化distinct2019-12-05
ORACLE 10g 安装教程[图文]2019-01-21
ORA-00947:Not enough values (没有足够的值)的深入分2019-01-22
Oracle显示游标的使用及游标for循环2019-03-01
Oracle 查看表空间的大小及使用情况sql语句2019-01-22
ORA-12514及ORA-28547错误解决方案2019-01-23