/****************************************************************
下面是给表添加字段的SQL脚本
****************************************************************/-- 给表"TBLNAME"添加字段
BEGIN
DECLARE
vCount INTEGER:=0;
-- 判断记录是否已经存在
BEGIN
SELECT COUNT( T.TABLE_NAME) INTO vCount
FROM SYS.ALL_TABLES T,SYS.ALL_TAB_COLUMNS C
WHERE T.TABLE_NAME=C.TABLE_NAME AND T.TABLE_NAME='TBLNAME'
AND C.COLUMN_NAME='FLDNAME';
IF vCount=0 THEN
BEGIN
-- 执行添加字段的脚本
EXECUTE IMMEDIATE 'ALTER TABLE "SYSTEM"."TBLNAME"
ADD ("FLDNAME" VARCHAR2(10) NOT NULL)';
-- 删除表名为"TBLNAME"和字段名为"FLDNAME"的记录
DELETE FROM "SYSTEM"."TBL_STRUC"
WHERE TBL_ENGLISH='TBLNAME' AND COL_ENGLISH='FLDNAME';
-- 添加表名为"TBLNAME"和字段名为"FLDNAME"的记录
INSERT INTO "SYSTEM"."TBL_STRUC"
VALUES('TBLNAME','TBLNAME','FLDNAME','字段名','字符','10','0','否','否',NULL,NULL,NULL,NULL);
END;
END IF;
END;
END;
/-- 向""SYSTEM"."TBLCOL""插入数据
BEGIN
DECLARE
vCount INTEGER:=0;
-- 判断记录是否已经存在
BEGIN
SELECT COUNT(COLENGLISH) INTO vCount FROM "SYSTEM"."TBL_COL"
WHERE COLENGLISH='FLDNAME';
IF vCount=0 THEN
BEGIN
-- 执行插入数据的脚本
INSERT INTO "SYSTEM"."TBLCOL"
VALUES('FLDNAME','字段名','字符','10','0','否','否',NULL);
END;
END IF;
END;
END;
/
我用OraScript来执行ORACLE的SQL脚本,比如上面的SQL脚本,分块执行,用"/"来获取SQL脚本,执行第一块SQL脚本出错时,我用try..except来退出执行,但是他根本就不执行except后面的代码,而是继续执行是我的问题还是OraScript的问题?
FROM SYS.ALL_TABLES T,SYS.ALL_TAB_COLUMNS C
WHERE T.TABLE_NAME=C.TABLE_NAME AND T.TABLE_NAME='TBLNAME'
AND C.COLUMN_NAME='FLDNAME';
IF vCount=0 THEN
BEGIN
-- 执行添加字段的脚本
EXECUTE IMMEDIATE 'ALTER TABLE "SYSTEM"."TBLNAME"
ADD ("FLDNAME" VARCHAR2(10) NOT NULL)';
BEGIN
DECLARE
vCount INTEGER:=0;
-- 判断记录是否已经存在
BEGIN
SELECT COUNT(COLENGLISH) INTO vCount FROM "SYSTEM"."TBLCOL"
WHERE COLENGLISH='FLDNAME';
IF vCount=0 THEN
BEGIN
-- 执行插入数据的脚本
INSERT INTO "SYSTEM"."TBLCOL"
VALUES('FLDNAME','字段名','字符','10','0','否','否',NULL);
END;
END IF;
END;
END;
/
你说这里吧,SELECT COUNT(COLENGLISH) INTO vCount FROM "SYSTEM"."TBL_COL"
不好意思,刚输错了,不是这里的原因
在ODAC的帮助里找到解决方法了哈,在OraScript的OnError事件里写代码就行了