为数据库找到 6705 篇 文章

创建某个过程来找出数字的阶乘?

vanithasree
更新于:2020-06-22 07:21:33

3K+ 浏览量

可以在如下查询中创建 it →mysql> 分隔符 // mysql> CREATE PROCEDURE fact(IN x INT)     -> BEGIN     -> DECLARE result INT;     -> DECLARE i INT;     -> SET result = 1;     -> SET i = 1;     -> WHILE i SET result = result * i;     -> SET i = i + 1;     -> END WHILE;     -> SELECT x AS Number, result as Factorial;     -> END// 查询已确认,影响 0 行(0.17 秒)现在调用此操作时... 阅读更多

复制存储过程和函数有什么限制?

Rishi Rathor
更新于:2020-06-22 07:24:53

190 浏览量

复制存储过程和函数的限制如下:操作类型 - 实际上,存储过程和函数的复制取决于操作的类型。如果存储过程中的动作是非确定性(随机)或基于时间的,则可能无法正确复制。根据其特性,随机生成的结果不可预测,且无法被精确复制;因此,复制到从属服务器上的随机动作将无法镜像在主服务器上执行的动作。事务类型 - 大规模 DML 操作(如批量插入)在执行时出现错误的非事务性表可能会在该... 阅读更多

在复制中使用存储过程和函数的特殊安全要求是什么?

radhakrishna
2020 年 6 月 22 日 07:23:52 更新

189 次浏览

事实上,MySQL 从属服务器有权执行从主 MySQL 服务器二进制日志中读取的任何语句,因此使用存储函数和复制有一些特殊安全约束。如果一般来说复制或二进制日志记录(用于进行特定时间点恢复)处于活动状态,则 MySQL DBA 有两个安全选项 – SUPER 权限选项由 DBA 授予希望创建存储函数的任何用户 SUPER 权限。log_bin_trust_function_creators 模式事实上,log_bin_trust_function_creators 让任何具有标准 CREATE ROUTINE 权限的人都能创建存储函数,因此 DBA 可以将 log_bin_trust_function_creators 系统变量设置为 1。 阅读更多

如何复制存储过程和函数内部发生的操作?

Nancy Den
2020 年 6 月 22 日 07:27:48 更新

132 次浏览

实际上,在存储过程和函数中执行的标准操作会从主 MySQL 服务器复制到从属 MySQL 服务器。即使在主 MySQL 服务器上通过正常 DDL 语句创建存储过程和函数,也会将其复制到从属 MySQL 服务器。通过这种方式,对象将存在这两个服务器上。存储过程和函数内部发生的操作之所以会被复制,是因为 MySQL 会记录发生在存储过程和函数中的每个 DDL 事件。在记录事件之后,它会被复制到从属 MySQL 服务器。但是实际的调用……阅读更多

如何在 MySQL 存储过程中执行回滚事务?

mkotla
2020 年 6 月 22 日 07:26:52 更新

2K+ 次浏览

如我们所知,ROLLBACK 将在事务开始后撤消对数据库作出的任何更改。为了在 MySQL 存储过程中执行 ROLLBACK,我们必须声明 EXIT 处理程序。我们可以对 sql 异常或 SQL 警告使用处理程序。可以借助一个示例来理解,其中为具有以下详细信息的表创建了具有 ROLLBACK 的存储过程 - mysql> SHOW CREATE table gg\G *************************** 第 1 行 ***************************        表:gg 创建表:CREATE TABLE `gg` (    `Id` int(11) NOT NULL AUTO_INCREMENT,    `Name` varchar(30) NOT NULL,    PRIMARY KEY ... 阅读更多

当我们在 MySQL 存储过程中使用 COMMIT 而某个事务在 START 事务下失败时,会发生什么?

Daniol Thomas
2020 年 6 月 22 日 06:57:24 更新

540 次浏览

假设其中一个查询失败或生成错误而另一个查询正确执行,则 MySQL 仍会提交已正确执行查询的更改。可以从以下示例中理解,其中我们使用具有以下数据的表“employee.tbl” - 示例 mysql> Select * from employee.tbl; +----+---------+ | Id | Name    | +----+---------+ | 1  | Mohan   | | 2  | Gaurav  | | 3  | Sohan   | | 4  | Saurabh | | 5  | Yash    | +----+---------+ 5 行设有 (0.00 秒) mysql> 分隔符 // mysql> ... 阅读更多

如何在 MySQL 存储过程中执行 COMMIT 事务?

mkotla
2020 年 6 月 22 日 07:02:12 更新

676 次浏览

如我们所知,START(开始)事务将启动事务,而 COMMIT(提交)用于在开始事务后进行任何更改。在下面的示例中,我们创建了一个带 COMMIT(提交)和 START(开始)事务的存储过程,它将插入一条新记录,并将对具有以下数据的“employee.tbl”表中的更改提交 -mysql> Select * from employee.tbl; +----+---------+ | Id | Name    | +----+---------+ |  1 | Mohan   | |  2 | Gaurav  | |  3 | Rahul   | |  4 | Saurabh | +----+---------+ 4 行记录集(0.00 秒)示例 mysql> 分隔符 // mysql> ... 阅读更多

我们如何在 MySQL 存储过程中执行 START(开始)事务?

Sreemaha
更新于 2020-06-22 06:50:09

371 次浏览

如我们所知,START(开始)事务将启动事务,并将自动提交模式关闭。在下面的示例中,我们创建了一个带 START(开始)事务的存储过程,它将向 employee.tbl 表中插入一条新记录,其中包含以下数据 -mysql> Select * from employee.tbl; +----+---------+ | Id | Name    | +----+---------+ | 1  | Mohan   | | 2  | Gaurav  | | 3  | Rahul   | +----+---------+ 3 行记录集(0.00 秒)示例 mysql> 分隔符 // mysql> Create Procedure st_transaction()    -> BEGIN    -> START TRANSACTION;    -> INSERT INTO employee.tbl(name) values ... 阅读更多

我们如何通过 MySQL 存储过程访问表?

Krantik Chavan
更新于 2020-06-22 07:02:44

312 次浏览

我们可以从 MySQL 存储过程中访问一个或所有表。下面是一个示例,其中我们创建了一个存储过程,它将接受表的名称作为参数,并在调用之后,将生成包含表中所有详细信息的结果集。示例 mysql> 分隔符 // mysql> Create procedure access(tablename varchar(30))    -> BEGIN    -> SET @X := CONCAT('Select * from', ' ', tablename);    -> Prepare statement from @X;    -> Execute statement;    -> END// 查询已正确执行,0 行受影响(0.16 秒)现在使用表名称调用该过程,我们 ... 阅读更多

MySQL 存储过程如何在其内部调用另一个 MySQL 存储过程?

Vrundesha Joshi
更新于 2020-06-22 06:48:26

4K+ 次浏览

MySQL 存储过程完全有可能在其内部调用另一个 MySQL 存储过程。为了演示这一点,我们举一个示例,其中一个存储过程将调用另一个存储过程来查找 last_insert_id(最后插入 ID)。示例 mysql> Create table employee.tbl(Id INT NOT NULL AUTO_INCREMENT, Name Varchar(30) NOT NULL, PRIMARY KEY(id))// 查询已正确执行,0 行受影响(3.87 秒) mysql> Create Procedure insert1()    -> BEGIN insert into employee.tbl(name) values ('Ram');    -> END// 查询已正确执行,0 行受影响(0.10 秒)现在,在下一个过程 insert2() 中,我们将调用第 1 个存储过程,即 insert1()。mysql> Create Procedure insert2() ... 阅读更多

广告