/***
p_DropTable 删除指定表
***/
CREATE OR REPLACE PROCEDURE p_DropTable
(
uTablename IN VARCHAR2 -- 指定的表名
)
AS
uNum NUMBER; uSQL VARCHAR(100);
BEGIN
uSQL := 'DROP TABLE ' || uTablename;
SELECT COUNT(*) INTO uNum
FROM DUAL
WHERE EXISTS
( SELECT * FROM USER_TABLES WHERE TABLE_NAME = UPPER(uTablename) );
IF (uNum = 1) THEN
EXECUTE IMMEDIATE uSQL;
DBMS_OUTPUT.PUT_LINE('表 '|| uTablename ||' 被删除了。');
ELSE
DBMS_OUTPUT.PUT_LINE('表 '|| uTablename ||' 不存在。');
End IF;
END p_DropTable;
有了这个存储过程后,就可以在创建表的语句前先调用,防止建表出错。例如:
/***
101 App_Banks 银行表.SQL
DROP TABLE App_Banks;
***/
CALL p_DropTable('App_Banks');
Create Table App_Banks
(
fID NUMBER, --序号
fBankName VARCHAR2(50) NOT NULL --银行名称
);
Alter Table App_Banks Add Constraint App_BanksKey Primary Key (fID) Using index;
ALTER TABLE App_Banks ADD Constraint App_Banks_fBankName UNIQUE (fBankName);
Call p_SetComment( 'App_Banks','银行表|银行名称' );
INSERT INTO App_Banks VALUES (1,'中国农业银行');
INSERT INTO App_Banks VALUES (2,'中国建设银行');
INSERT INTO App_Banks VALUES (3,'中国工商银行');
INSERT INTO App_Banks VALUES (4,'中国银行');
INSERT INTO App_Banks VALUES (5,'招商银行');
COMMIT;
SELECT * FROM App_Banks;
关于存储过程 p_SetComment 请参考博文《一个通用的添加表字段说明的存储过程》