暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase8s数据库CREATE PROCEDURE 语句

张维群 2021-11-26
221

使用 CREATE PROCEDURE 语句创建用户定义过程。(要从单独文件中的源代码文本创建过程,请使用 CREATE PROCEDURE FROM 语句。)

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

用法

在 GBase 8s ESQL/C 中,您可以将 CREATE PROCEDURE 仅作为 PREPARE 语句中的文本使用。如果您希望创建编译时文本已知的过程,则必须使用 CREATE PROCEDURE FROM 语句。如果您包含可选的 IF NOT EXISTS 关键字,且指定名称的过程已经注册于当前数据库中,则数据库服务器不采取任何操作(而非向应用程序发送异常)(因为过程的标识符可以被重载,所以它可以不必包含这些关键字,如果数据库服务器可以将新过程的参数列表解析为与当前数据库中相同名称的任何其他过程的参数列表不同。)

例程使用创建时有效的对照顺序,请参阅 GBase 8s 的 SET COLLATION 语句 语句,获取关于使用非缺省对照的信息。

示例

对于此示例,假设您具有两个如下定义的重载的过程:

CREATE PROCEDURE raise_prices ( per_cent INT)

UPDATE stock SET unit_price = unit_price + (unit_price * (per_cent/100) );

END PROCEDURE

CREATE PROCEDURE raise_prices ( per_cent INT, selected_unit CHAR )

UPDATE stock SET unit_price = unit_price + (unit_price * (per_cent/100) )

where unit=selected_unit;

END PROCEDURE

为了引用上述过程,您需要在参数列表后提供过程名称,如下所示:

DROP PROCEDURE raise_prices(INT);

DROP PROCEDURE raise_prices(INT, CHAR);

更简便的方法是,使用指定的名称来标识它们。以下示例将会使用指定名称创建过程:

CREATE PROCEDURE raise_prices ( per_cent INT ) SPECIFIC raise_prices_all

UPDATE stock SET unit_price = unit_price + (unit_price * (per_cent/100) );

END PROCEDURE

DROP SPECIFIC PROCEDURE raise_prices_all;

CREATE PROCEDURE raise_prices ( per_cent INT, selected_unit CHAR )

SPECIFIC raise_prices_by_unit

UPDATE stock SET unit_price = unit_price + (unit_price * (per_cent/100) )

where unit=selected_unit;

END PROCEDURE

我们可以简单地使用它们指定的名称来删除它们:

DROP SPECIFIC PROCEDURE raise_prices_by_all;

DROP SPECIFIC PROCEDURE raise_prices_by_unit; 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论