一个删除表的存储过程

/***
  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 请参考博文《一个通用的添加表字段说明的存储过程》

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值