|
0. ³£Óú¯Êý
substr(str,start,length);//¿ÉÒÔ·´ÏòË÷Òý¡£length²»Ö¸¶¨¾Íµ½½áβ
to_number(str);//strתnumber
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;//ÈÕÆÚת×Ö·û
nvl(tt,0);//ÈôÊÇ¿ÕÖµÔòΪ0
1. ÓÎ±ê ¶ÔÓÚ¼¯ºÏÊý¾ÝµÄ´¦Àí£¬Ñ§»áʹÓôø²ÎÊýµÄ·½Ê½¡£
ͬһ¸ö»á»°Ä¬ÈÏ×î¶à300¸ö¹â±ê set system set open_cursors=400 scope= {both;½ö¸ü¸Äµ±Ç°memory;spfile;ÖØÆôÉúЧ}
//ÊôÐÔ
//cus1%found cus1%notfound cus1%isopen cus1%rowcountÓ°ÏìÐÐÊý
SET serveroutput ON;
DECLARE
CURSOR c1
IS
SELECT bookno,booktitle FROM bebook;
bookno bebook.bookno%type;//ÒýÓÃÀàÐÍ
booktitle bebook.booktitle%type;
rowbook bebook%rowtype;//ÐÐÒýÓÃÀàÐÍ
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO bookno,booktitle;
EXIT
WHEN c1 %notfound;
dbms_output.put_line('this string breaks here.'||bookno||booktitle);
END LOOP;
END;
//´ø²ÎÊýµÄ¹â±ê
Cursor
cemp(dno number) is select ename from emp where deptno = dno;
Open cemp(10);
2. rowtype ÀûÓÃÕâ¸öÊý¾ÝÀàÐÍÔö¼Ó³ÌÐòµÄ½¡×³ÐÔ¡£²»»áÊܵ½±í½á¹¹¸ü¸Äµ¼Ö³ÌÐò¸ü¸Ä¡£ ¼Ç¼¿ÉÒÔÕûÌ帳ֵ rowtype²Î¿¼ rowtype²Î¿¼ //¶ÁÈëÊý¾Ýµ½rowtypeÀàÐÍÖÐ
create table testtable();
r testtable%rowtype;
select * into r from testtable where pno=...;
//rowtypeÀàÐÍÊý¾Ý²åÈë±íÖÐ
insert into testtable2 values r;
-----------------------------------------------------
-----------------------------------------------------
declare
v_dept dept%rowtype;
begin
v_dept.deptno := 60;
v_dept.dname := 'sample';
v_dept.loc := 'chicago';
insert into dept values v_dept;
end;
declare
v_dept dept%rowtype;
begin
v_dept.deptno := 60;
v_dept.dname := 'sample2';
v_dept.loc := 'dallas';
update dept set ROW=v_dept where deptno=v_dept.deptno;
end;
declare
rwEmp t_mst_employee%rowtype;
begin
select * into rwEmp from t_mst_employee where emp_no='10001';
rwEmp.emp_no := '20001';
insert into t_mst_employee values rwEmp;
update t_mst_employee set ROW=rwEmp where emp_no='3900';
end;
3. ¹ý³Ì create or replace PROCEDURE "STATISTICS_ORDERSUMxxx"(
branchNo BEbranch.branchNo%type,
reportPerson VARCHAR2,
ordersum_table_cursor OUT sys_refcursor)
IS
testcur sys_refcursor;
v_typegoodNo BEproduct.productClass%TYPE; --Àà±ð±àºÅ
v_pritypegoodNo BEproduct.productClass%TYPE; --ÉÏÒ»Óαê¶ÁÈ¡µÄÀà±ð±àºÅ
v_branchNo BEbranch.branchNo%TYPE; --Óαê¶ÁÈ¡µÄ·Öµê±àºÅ
v_pribranchNo BEbranch.branchNo%TYPE; --ÉÏÒ»¸öÓαê¶ÁÈ¡µÄ·Öµê±àºÅ
v_branchname BEbranch.branchName%type; --¸÷·Öµê
v_branchsum NUMBER; --·Öµê×ÜÊý
v_typenum NUMBER;
ordersum_table odreport1%rowtype;
--Óα궨Òå
CURSOR ordersum_cur(pno VARCHAR2)
IS
SELECT d.typegoodno,
SUM(b.quantity)
FROM BDprocureplan a,
BDplandetail b,
BEproduct c,
DTtypegood d
WHERE a.branchno =pno
AND a.planno = b.planno
AND b.productno = c.productno
AND c.productclass = d.typegoodno
GROUP BY d.typegoodno;
CURSOR branch_cur
IS
SELECT branchNo,branchName FROM BEbranch;
maketime DATE;
mycount INT:=0;
BEGIN
SELECT COUNT(*) INTO mycount FROM bebranch;
OPEN branch_cur;
LOOP
FETCH branch_cur INTO v_branchNo,v_branchname;
EXIT
WHEN branch_cur%NOTFOUND;
ordersum_table.branchname := v_branchname;
ordersum_table.branchno := v_branchno;
dbms_output.put_line(ordersum_table.branchname);
OPEN ordersum_cur( v_branchNo );
LOOP
FETCH ordersum_cur INTO v_typegoodNo,v_typenum;
EXIT
WHEN ordersum_cur%NOTFOUND;
CASE v_typegoodNo
WHEN'001'THEN
ordersum_table.clothessum := ordersum_table.clothessum+v_typenum;
WHEN'002'THEN
ordersum_table.shoesum:=ordersum_table.shoesum+v_typenum;
WHEN'003'THEN
ordersum_table.foodsum:=ordersum_table.foodsu
|