一、近期有这么一个需求,需要从数据库查询table表的数据,然后组装成relation 表数据存进去。
使用存储过程,由于数据量不是一条,所以需要loop循环 。结果如下 ,恐日后遗忘,徐记之。
- declare
- cursor js_test is (select GET_UUID AS id,'111222555' as database_id,table_name as
- table_name,table_code as table_code
- from std_table where table_name like 'PAY%');
- begin
- for item in js_test loop
- insert into std_database_table_relation(id,database_id,table_name,table_code)
- values (item.id,item.database_id,item.table_name,item.table_code);
- end loop; commit;
- end;
二、说明:
1、declare在 Oracle 一般是用在函数、存储过程和块结构及简单的事务中,作用是声明一个变量,函数等。
2、cursor 是游标,常用于脚本处理。cursor 可以在存储过程中遍历select 结果集,对其进行相关的操作格式如下:
- DECLARE 游标名称 CURSOR FOR SELECT 字段1,字段2,字段3,... FROM 表名 WHERE ...
- OPEN 游标名称
- FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,...
- WHILE @@FETCH_STATUS=0
- BEGIN
- SQL语句执行过程... ...
- FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,...
- END
- CLOSE 游标名称
- DEALLOCATE 游标名称 (删除游标)
其中while循环的判断条件:
@@FETCH_STATUS =0 FETCH 语句成功
@@FETCH_STATUS =-1 FETCH 语句失败或此行不在结果集中
@@FETCH_STATUS =-2 被提取的行不存在
fetch ,从游标中获取数据 。
三、不用游标,使用sql语句也能将查询的数据 插入数据库
- --查询数据并存入 数据 库
- insert into std_table (ID,BUSINESS_KEY,table_name,table_code,CREATE_TIME)
- ( SELECT GET_UUID AS id,'10101010' as business_key,table_name as table_name,table_code as
- table_code,sysdate as create_time
- from std_table where table_name like 'BGT_PM%'
- );
其中: sysdata 是oracle的时间戳,直接查也可以获取 ,也可自定义格式,
信息加载中,请等待
微信客服(速回)
微信客服(慢回)