create or replace procedure SP_CLEAR(V_TABLE IN STRING) IS
/*---------------------------------------------------------------
--Function:delete all records of tables in v_table //
--Author:Liaozq //
--Date:2002/10/8 //
--Explain:(1)v_table must like this:table1,table2,table3,... //
(2)Before delete records from tables,recorder thess //
tables.
---------------------------------------------------------------*/
TYPE cur_type IS REF CURSOR;
c_tab cur_type;
v_str STRING(2000);
v_tab t_clear.wlbmc%TYPE;
v_sql STRING(3000);
begin
--Get table from v_table
--Reorder these tables
v_str:=upper(v_table);
v_str:=REPLACE(v_str,',',''',''');
v_str:=''''||v_str||'''';
v_sql:='SELECT WLBMC FROM T_CLEAR WHERE TRIM(WLBMC) IN ('||v_str||') ORDER BY BZ DESC';
OPEN c_tab FOR v_sql;
LOOP
FETCH c_tab INTO v_tab;
EXIT WHEN c_tab%NOTFOUND;
v_sql:='delete from '||v_tab||'';
EXECUTE IMMEDIATE v_sql;
END LOOP;
COMMIT;
--deal with exception
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
end SP_CLEAR;
/
/*---------------------------------------------------------------
--Function:delete all records of tables in v_table //
--Author:Liaozq //
--Date:2002/10/8 //
--Explain:(1)v_table must like this:table1,table2,table3,... //
(2)Before delete records from tables,recorder thess //
tables.
---------------------------------------------------------------*/
TYPE cur_type IS REF CURSOR;
c_tab cur_type;
v_str STRING(2000);
v_tab t_clear.wlbmc%TYPE;
v_sql STRING(3000);
begin
--Get table from v_table
--Reorder these tables
v_str:=upper(v_table);
v_str:=REPLACE(v_str,',',''',''');
v_str:=''''||v_str||'''';
v_sql:='SELECT WLBMC FROM T_CLEAR WHERE TRIM(WLBMC) IN ('||v_str||') ORDER BY BZ DESC';
OPEN c_tab FOR v_sql;
LOOP
FETCH c_tab INTO v_tab;
EXIT WHEN c_tab%NOTFOUND;
v_sql:='delete from '||v_tab||'';
EXECUTE IMMEDIATE v_sql;
END LOOP;
COMMIT;
--deal with exception
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
end SP_CLEAR;
/
SQL>set serveroutput on -- 显示输出
SQL>CREATE OR REPLACE PROCEDURE prc_test(strIn VARCHAR2,strOut OUT VARCHAR2,strInOut IN OUT VARCHAR2)
IS
BEGIN
strOut := 'This is Output item';
strInOut := ' in and out item';
dbms_output.put_line('输入参数: ' || strIn);
dbms_output.put_line('输出参数: ' || strOut);
dbms_output.put_line('输入|出参数: ' || strInOut);
END prc_test; -- 建立过程SQL>var strTest1 varchar2(20); -- 定义bind变量
SQL>var strTest2 varchar2(20); -- 定义bind变量
SQL>exec prc_test('input',:strTest1,:strTest2); -- 调用存储过程
模式说明
I N :当当过程被调用时,实参的值将传入该过程。在该过程内部,形参类似P L / S Q L 使用的常
数,即该值具有只读属性不能对其修改。当该过程结束时,控制将返回到调用环境,这
时,对应的实参没有改变。
O U T :当当过程被调用时,实参具有的任何值将被忽略不计。在该过程内部,形参的作用类似没
有初始化的P L / S Q L 变量,其值为空(N U L L )。该变量具有读写属性。当该过程结束时,
控制将返回调用环境,形参的内容将赋予对应的实参。(在O r a c l e 8 i 中,该操作可由
N O C O P Y 变更。有关N O C O P Y 的详细内容,请看本章“按引用和按值传递参数”一节。)
IN OUT :当该模式是模式IN 和O U T 的组合。当调用过程时,实参的值将被传递到该过程中。在该
过程内部,形参相当于初始化的变量,并具有读写属性。当该过程结束时,控制将返回
到调用环境中,形参的内容将赋予实参(在O r a c l e 8 i 中与参数N O C O P Y 有关)。
as
begin
Execute immediate 'delete from test';
end deldata;
就行了
IS
S1 VARCHAR2(1000);BEGIN --记录日志开始
INSERT INTO Y_LOG_PROCEDURE(XH,PROCEURE_NAME,ACTION,TIME)
VALUES(SEQ_LOG_PROCEDURE.NEXTVAL,'PRO_JF_T_O_INSERT','BEGIN!',SYSDATE);
COMMIT;
INSERT INTO O_DCHLHS_DCHLKHSRTZ(ID,CMHCID,MTGSID,WCSJ,HLID,KH,YSJE)
SELECT SEQ_JF_T_O_1.NEXTVAL,
A.CMHCID,
A.SFGSID,
TO_DATE(A.WCSJ,'YYYYMMDD'),
A.CCHLID,
A.KH,
A.YSJE
FROM T_DCHLHS_JFTZZH_VI1 A
WHERE TO_NUMBER(SUBSTR(A.WCSJ,1,6))=NY;
END;