# 存储过程DEMO
create or replace procedure acc_xx_pro
as
v_date_format varchar2(50);
v_this_day varchar2(50);
v_create_table varchar2(500);
v_insert_data varchar2(300);
begin
select to_char(sysdate-1,'yyyyMMdd') into v_date_format from dual;
v_this_day:='acc_xx'||v_date_format;
v_create_table:='CREATE TABLE '||v_this_day||' (
PK1 NUMBER(38) NOT NULL,
EVENT_TYPE VARCHAR2(30) NOT NULL,
HANDLE VARCHAR2(255),
STATUS NUMBER,
SESSION_ID NUMBER(38)
)';
begin
execute immediate v_create_table;
v_insert_data:='insert into '||v_this_day||' select * from acc_xx where timestamp>=trunc(sysdate-1) and timestamp<trunc(sysdate)';
execute immediate v_insert_data;
end;
commit;
end;
# 函数DEMO
create or replace FUNCTION get_cn_name(
table_name IN varchar2 := NULL
)
RETURN varchar2
IS
v_table_name VARCHAR2(32);
BEGIN
v_table_name := upper(table_name);
IF (v_table_name = 'TABLE_ONE') THEN
return ('one');
ELSIF (v_table_name = 'TABLE_TWO') THEN
return ('two');
ELSIF (v_table_name = 'TABLE_THREE') THEN
return (NULL);
ELSIF (v_table_name LIKE 'TABLE_FOUR' ) THEN
return (NULL);
END IF;
return ('other');
END;
# 带游标的DEMNO(隐式游标)
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, last_name FROM employees
WHERE department_id = 50;
BEGIN
FOR v_emp_record IN emp_cursor
LOOP
DBMS_OUTPUT.PUT_LINE(v_emp_record.employee_id|| ' ' ||v_emp_record.last_name);
END LOOP;
END;
注意
有了这几个模板,基本上什么存储过程都能照葫芦画瓢了