pl/sql developer中的问题

[复制链接]
查看11 | 回复0 | 2007-9-18 15:23:56 | 显示全部楼层 |阅读模式
在pl/sql developer 中编写如下程序
create or replace procedure dropdata(p_tablename in varchar2, --表名格式 test#test2#test3#

p_begindate in varchar2, --开始时间

p_enddate in varchar2) is
p_temptablename varchar2(2000);
p_positionnumber;
p_table varchar2(50);
sql_backvarchar2(200);
sql_deletevarchar2(200);

pv_beginDate date := to_date(p_begindate, 'yyyy-mm-dd');
pv_endDate date := to_date(p_enddate, 'yyyy-mm-dd');
begin
p_temptablename := p_tablename;
p_position:= instr(p_temptablename, '#');

--假如分割符号时 '#'
loop
p_table := substr(p_temptablename, 1, p_position - 1);
p_temptablename := substr(p_temptablename, p_position + 1);

--备份原来的数据
sql_back := 'create table ' || p_table || '_bak as select * from ' || p_table;
execute immediate sql_back;

--假设表中有创建日期字段createDate
sql_delete := 'delete from ' || p_table ||

' where createDate >= :1 and createDatecreate or replace procedure proc_ctab_toms (p_tname in varchar)
2as
3v_sql varchar2(128);
4begin
5 v_sql:='create table '||p_tname||'_bak as select * from '||p_tname;
6 execute immediate v_sql;
7 exception
8 when OTHERS then
9
dbms_output.put_line('backup error sqlcode='||SQLCODE||' sql='||v_sql);
10end;
11/
过程已创建。
SQL> desc toms
名称
是否为空? 类型
----------------------------------------- -------- ----------------------------
STR
VARCHAR2(32)
SQL> desc toms_bak
ERROR:
ORA-04043: 对象 toms_bak 不存在

SQL> set serveroutput on
SQL> exec proc_ctab_toms('toms');
PL/SQL 过程已成功完成。
SQL> desc toms_bak
名称
是否为空? 类型
----------------------------------------- -------- ----------------------------
STR
VARCHAR2(32)
SQL>
SQL> exec proc_ctab_toms('toms');
backup error sqlcode=-955 sql=create table toms_bak as select * from toms
PL/SQL 过程已成功完成。
SQL>
[/php]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行