RT比如说我现在有3张表
——员工表create table emp (emp_id number(5), emp_name varchar2(20), emp_salary number(4)); ——部门表create table dept (dept_id number(3), dept_name varchar2(20), emp_id number(5));
——T_tempcreate table T_TEST( emp_id NUMBER not null,emp_name varchar2(20),emp_salary number(4),dept_id number(3),dept_name varchar2(20));编写存储过程,传入参数为员工编号,根据员工编号查询记录,把该员工的所在部门写入到T_temp表中.小弟是初学,还请各位高手给个答案,另外我想请大家介绍关于讲解oracle存储过程比较详细的书籍,在这里先谢谢大家了!!
——员工表create table emp (emp_id number(5), emp_name varchar2(20), emp_salary number(4)); ——部门表create table dept (dept_id number(3), dept_name varchar2(20), emp_id number(5));
——T_tempcreate table T_TEST( emp_id NUMBER not null,emp_name varchar2(20),emp_salary number(4),dept_id number(3),dept_name varchar2(20));编写存储过程,传入参数为员工编号,根据员工编号查询记录,把该员工的所在部门写入到T_temp表中.小弟是初学,还请各位高手给个答案,另外我想请大家介绍关于讲解oracle存储过程比较详细的书籍,在这里先谢谢大家了!!
因为他可以去整行的记录
你也可以直接用insert into table()
select * from table where ..........
/******************************************************************************
过程名:RPT_SELL_MONTH_REPORT
参数:years: 年;
months : 月;
返回值:result 标志是否成功;1:--为成功;-1:--为失败;
功能:生成预付费卡月报表。
******************************************************************************/ varResultSuccess VARCHAR2(2);
varResultFailed VARCHAR2(2); v_OrgId RPT_SELL_MONTH.Orgid%TYPE;
v_CardtypeId RPT_SELL_MONTH.CARD_TYPE_ID%TYPE;
v_FACE_VALUE RPT_SELL_MONTH.SELL_FACEVALUE%TYPE;
v_Num RPT_SELL_MONTH.SELL_NUM%TYPE;
v_Amount RPT_SELL_MONTH.Sell_Amount%TYPE; --遍历本月销售,定义cursor
CURSOR sellCursor IS
SELECT bs.ORGID,
bsi.CARD_TYPE_ID,
SUM(bsi.NUM * bsi.FACE_VALUE),
SUM(bsi.NUM),
SUM(bsi.AMOUNT)
FROM BUS_SELL bs,BUS_SELL_ITEMS bsi
WHERE bs.processinstid = bsi.processinstid AND
bs.WF_STOP_TYPE = 1 AND
TO_CHAR(bs.SELL_DATE,'YYYYMM') = (years||months)
GROUP BY bsi.CARD_TYPE_ID,bs.ORGID;
BEGIN
varResultSuccess := '1';
varResultFailed := '-1'; SAVEPOINT sp1;
--删除当前月已有记录
DELETE FROM RPT_SELL_MONTH
WHERE REPORT_YEAR = years AND
REPORT_MONTH = months;
--查询符合条件的销售记录,生成报表记录
OPEN sellCursor;
LOOP
FETCH sellCursor INTO v_OrgId,
v_CardtypeId,
v_FACE_VALUE,
v_Num,
v_Amount;
EXIT WHEN sellCursor%NOTFOUND OR sellCursor%NOTFOUND IS NULL; INSERT INTO RPT_SELL_MONTH ( RPT_ID,
CARD_TYPE_ID,
CARD_TYPE_NAME,
SELL_NUM,
SELL_FACEVALUE,
SELL_AMOUNT,
ORG_NAME,
ORGID,
ORGSEQ,
REPORT_YEAR,
REPORT_MONTH )
SELECT SEQ_SELLMONTH_ID.NEXTVAL,
dct.CARD_TYPE_ID,
dct.DESCR,
v_Num,
v_FACE_VALUE,
v_Amount,
eto.orgname,
v_OrgId,
eto.orgseq,
years,
months
FROM BD_CARD_TYPES dct,
EOSORG_T_ORGANIZATION eto
WHERE dct.CARD_TYPE_ID = v_CardtypeId AND
eto.ORGID = v_OrgId; END LOOP;
CLOSE sellCursor;
COMMIT;
result := varResultSuccess;
RETURN; EXCEPTION
WHEN OTHERS THEN
ROLLBACK TO SAVEPOINT sp1;
result := varResultFailed;
RETURN;
END RPT_SELL_MONTH_REPORT;
如果已經創建,用for rc in (select a.id,b.name from table1,table2)
loop
insert into t1(id,name) values(rc.id,rc.name);
end loop;