0
点赞
收藏
分享

微信扫一扫

南大通用GBase8s 常用SQL语句(122)

乐百川 2022-04-29 阅读 111

    1. DROP CAST 语句

使用 DROP CAST 语句从数据库移除现有的强制转型。

该语句是 SQL ANSI/ISO 标准的扩展。

语法

 

元素

描述

限制

语法

source_type

强制转型接收为输入的数据类型

必须存在

标识符; 数据类型

target_type

由强制转型返回的数据类型

必须存在

标识符; 数据类型

您必须是强制转型的所有者或拥有 DBA 特权才可使用 DROP CAST。删除强制转型会从 syscasts 系统目录表中除去它的定义,所以不能显式地或隐式地调用强制转型。删除强制转型对于强制转型相关联的用户定义的函数没有影响。使用 DROP FUNCTION 语句可从数据库中除去用户定义的函数。

警告 请勿删除用户 gbasedbt 拥有的内置强制转型。内置数据类型之间的字段转换需要这些强制转型。

在给定数据类型上定义的强制转型也可以用在从该源类型创建的任何 DISTINCT 类型上。如果删除强制转型,则无法再为 DISTINCT 类型调用它,但是删除为 DISTINCT 类型定义的强制转型对为其源类型创建的强制转型没有影响。当创建 DISTINCT 类型时,数据库服务器会自动地定义一个从 DISTINCT 类型到其源类型的显式强制转型以及另一个从源类型到 DISTINCT 类型的显式强制转型。当删除 DISTINCT 类型时,数据库服务器会自动删除这两个强制转型。

如果您包含可选的 IF EXISTS 关键字,则如果在两个指定的数据类型之间的强制转型在当前数据库中没有注册过,数据库服务器不执行任何操作(而不是向应用程序发送异常)。

示例

一个强制转型(如 superstores_demo 数据库中的这个强制转型)可以使用 DROP CAST 语句删除 :

DROP CAST (decimal(5,5) AS percent);

现有的强制转型的详细信息可以使用以下 SQL 在 syscasts 系统目录表中找到:

SELECT routine_name, class, argument_type, result_type FROM Syscasts;

    1. DROP DATABASE 语句

使用 DROP DATABASE 语句删除整个数据库,包括系统目录表、对象和数据。

该语句是 SQL ANSI/ISO 标准的扩展。

语法

 

用法

DROP DATABASE 语句是 ANSI/ISO 标准的扩展,该标准没有提供毁坏数据库的语法。

以下语句删除 stores_demo 数据库:

DROP DATABASE stores_demo

您必须拥有 DBA 特权,或者您是用户 gbasedbt 才可成功运行 DROP DATABASE 语句。否则,数据库服务器会发出一条错误消息,并且不会删除数据库。

不能删除当前数据库或当前正由其它用户使用的数据库。数据库的所有当前用户必须先执行 CLOSE DATABASE 语句,这样 DROP DATABASE 才会成功。

DROP DATABASE 语句试图创建到您的想要删除的数据库的隐式连接。如果前面的 CONNECT 语句已经建立了到另一个数据库的显式连接,而且该连接仍然是您的当前连接,则 DROP DATABASE 语句失败,错误为 -1811。在这种情况下,您必须首先使用 DISCONNECT 语句关闭显式连接后,才能执行 DROP DATABASE 语句。

如果您包含可选的 IF EXISTS 关键字,则如果没有指定名称的数据库由所连接的数据库服务器实例管理,则数据库服务器不采取任何操作(而不是向应用程序返回错误)。

DROP DATABASE 语句不可以出现在多语句 PREPARE 中,也不可以出现在 SPL 例程中。

在 DROP DATABASE 操作中,数据库服务器对数据库中的每个表都获取一个锁,并保留这些锁直至整个操作完成。请给您的数据库服务器配置足够的锁以满足这一事实的发生。

例如,如果要删除的数据库有 2500 个表,但是为您的数据库服务器配置的锁定少于 2500 个,则 DROP DATABASE 语句失败。有关如何配置可用于数据库服务器的锁的数目的更多信息,请参阅 GBase 8s 管理员参考手册 中对 LOCKS 配置参数的讨论。

在 DB-Access 中,使用 DROP DATABASE 语句时要小心。DB-Access 不会提示您验证是否想要删除整个数据库。

在 ESQL/C 中,您可以在程序或主变量中使用未限定的数据库名称,或可以指定标准的 database@server 格式。例如,以下语句删除了名为 gibson95 的数据库服务器的 stores_demo 数据库:

EXEC SQL DROP DATABASE stores_demo@gibson95;

如果此语句执行成功,则 gibson95 数据库服务器实例继续存在,但该数据库服务器的 stores_demo 数据库不再存在。有关更多信息,请参阅数据库名。

举报

相关推荐

0 条评论