从一个表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功能:
SQL代码
- CREATE OR REPLACE PROCEDURE GET_DATA(
-
-
-
- n_task_id IN number,
-
- v_task_name IN varchar2,
-
- v_name IN varchar2
-
- )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IS
-
-
-
- i_count number(5);
-
-
-
-
-
- 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
-
- );
-
-
-
- i_count := i_count + 1;
-
- IF i_count >100 THEN
-
- COMMIT;
-
- RETURN;
-
- END IF;
-
-
-
- END LOOP;
-
-
-
-
-
-
-
- EXCEPTION
-
- WHEN OTHERS THEN
-
- rollback;
-
- END SRBZ_GET_SRBZ_KD_SPEED;
-
- /