`

oracle动态SQL

阅读更多

create or replace procedure proc_rgb_optimation_backup (p_table_name varchar2) is
sql_statement varchar2(500);
i_l_count pls_integer;
sql_count varchar2(200);
new_table varchar2(30);
begin
  new_table := 'TBL_BMCODE_RGB_OPT_' || to_char(sysdate,'yyyyMMdd'); --变量赋值用 :=
  i_l_count := 0;
  sql_count := 'select count(*) from user_tables t where t.TABLE_NAME =' 
   || '''' || new_table || '''';  --这里注意 两个单引号表示一个单引号(‘)
  execute immediate sql_count into i_l_count;  -- 用 execute immediate 来执行sql . 用 into 来接收返回值
  if i_l_count<=0 then
  sql_statement := 'create table ' || new_table || ' as select * From ' || p_table_name;
  else
    sql_statement := 'INSERT INTO ' || new_table || '(BM_CODE,SPEED,RGB_OLD,RGB_OPTI,TRAVELTIME,TIMESTAMP,DURATION,SAMPLE,NUM_RED,NUM_YELLOW) select BM_CODE,SPEED,RGB_OLD,RGB_OPTI,TRAVELTIME,TIMESTAMP,DURATION,SAMPLE,NUM_RED,NUM_YELLOW from ' || p_table_name;
  end if;
  execute immediate sql_statement;
  commit;
  
  EXCEPTION  
    WHEN dup_val_on_index THEN     
      rollback;
    WHEN timeout_on_resource THEN
      rollback;
    WHEN NO_DATA_FOUND THEN     
      rollback;
end;

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics