为了方便,给各个帐套下的表循环添加字段
DECLARE v_row rmsys.rmsys_unitaccount%ROWTYPE;
u_USERCODE VARCHAR2(80):='';
strsql varchar2(2000);
strIs varchar2(2000);
strsqldel VARCHAR2(2000);
spbnum NUMBER;
isN NUMBER;
isStr VARCHAR2(2000);
nnn NUMBER;
CURSOR curUnit IS SELECT * FROM rmsys_unitaccount;
BEGIN
OPEN curUnit;
FETCH curUnit INTO v_row;
while curUnit%found LOOP
--判断帐套是否存在
strIs:='select COUNT(*) from all_users WHERE username =UPPER( '''||v_row.saccount||''')';
EXECUTE IMMEDIATE strIs INTO spbnum;
IF spbnum > 0 THEN
isStr:='SELECT COUNT(*) FROM dba_tables WHERE owner=UPPER('''||v_row.saccount||''') AND TABLE_NAME=''RMDICT_MATLDT''';
EXECUTE IMMEDIATE isStr INTO isN;
IF isN>0 THEN --帐套下已存在该表
--添加字段
isStr:='SELECT COUNT(*) FROM dba_tab_cols WHERE owner=UPPER('''||v_row.saccount||''') AND TABLE_NAME=''RMDICT_MATLDT'' AND COLUMN_NAME IN (''SFOCUSFLAG'',''SSTANDBYFLAG1'',''SSTANDBYFLAG2'',''SSTANDBYFLAG3'')';
EXECUTE IMMEDIATE isStr INTO nnn;
IF nnn=0 THEN
isStr:='ALTER TABLE '||v_row.saccount||'.RMDICT_MATLDT ADD(SFOCUSFLAG NVARCHAR2(1),SSTANDBYFLAG1 NVARCHAR2(10),SSTANDBYFLAG2 NVARCHAR2(10),SSTANDBYFLAG3 NVARCHAR2(10))';
dbms_output.put_line(isStr);
EXECUTE IMMEDIATE isStr;
END IF;
END IF;
END IF;
FETCH curUnit INTO v_row;
end loop;
CLOSE curUnit;
END;
posted on 2009-08-17 17:04 YWN's blog 阅读(177) 评论(0) 收藏 举报
浙公网安备 33010602011771号