用存儲過程創建數據表:
創建時注意必須添加authid current_user ,如果創建的表已存在,存儲過程繼續執行,但如不不加此關鍵語句,存儲過程將出現異常,
這個語句相當於賦權限。
創建語句如下:
create or replace procedure sp_create_mnl(i_id varchar2) authid current_user as /********************************* 名稱:sp_create_mnl 功能描述:創建模擬量歷史數據存儲表 修訂記錄: 版本號 編輯時間 編輯人 修改描述 1.0.0 2012-9-20 wylaok 1.創建此存儲過程 1.0.1 2012-9-21 wylaok 2.修改表名稱及變量名稱,增加必要注釋 入參出參描述: i_id 測點編號 **********************************/ v_tablename varchar2(30);--表名 v_flag number(10,0); v_sqlfalg varchar(200); begin v_flag:=0; v_tablename:=CONCAT('MNL', UPPER(i_id)); v_sqlfalg:='select count(*) from user_TABLES where table_name='''||v_tablename||''''; dbms_output.put_line(v_sqlfalg); execute immediate v_sqlfalg into v_flag; if v_flag=0 then --如果沒有這個表 則去創建 begin execute immediate 'create table '||v_tablename ||' ( DATETIME DATE, MIN00 FLOAT, AGV00 FLOAT, MAX00 FLOAT, MIN05 FLOAT, AVG05 FLOAT, MAX05 FLOAT, MIN10 FLOAT, AGV10 FLOAT, MAX10 FLOAT, MIN15 FLOAT, AGV15 FLOAT, MAX15 FLOAT, MIN20 FLOAT, AGV20 FLOAT, MAX20 FLOAT, MIN25 FLOAT, AGV25 FLOAT, MAX25 FLOAT, MIN30 FLOAT, AGV30 FLOAT, MAX30 FLOAT, MIN35 FLOAT, AGV35 FLOAT, MAX35 FLOAT, MIN40 FLOAT, AGV40 FLOAT, MAX40 FLOAT, MIN45 FLOAT, AGV45 FLOAT, MAX45 FLOAT, MIN50 FLOAT, AGV50 FLOAT, MAX50 FLOAT, MIN55 FLOAT, AGV55 FLOAT, MAX55 FLOAT, MINV FLOAT, MAXV FLOAT, AVGV FLOAT, MAXTIME DATE, MINTIME DATE ) tablespace WYG pctfree 10 initrans 1 maxtrans 255 storage ( initial 512K next 512K minextents 1 maxextents unlimited pctincrease 0 )'; -- execute immediate sqlstr; end; end if; end;
調用此存儲過程:
begin
createmnl('mnl_14');
end;