您当前的位置:首页 > 互联网教程

sql 调用已经建立的存储过程

发布时间:2025-05-12 05:03:34    发布人:远客网络

sql 调用已经建立的存储过程

一、sql 调用已经建立的存储过程

实现的方法和详细的操作步骤如下:

1、第一步,创建一个存储过程,该代码如图所示。存储过程的主要目的是为表“JingYan”插入新数据,如下图所示,然后进入下一步。

2、其次,完成上述步骤后,执行以下几行代码,并查看执行是否成功。现在,数据库中有一个存储过程源“sp_JY”,如下图所示,然后进入下一步。

3、接着,完成上述步骤后,查看“JingYan”表中的当前数组,只有三行数据,如下图所示,然后进入下一步。

4、然后,完成上述步骤后,在mysql中,要调用存储过程,只需使用“call”关键字并输入存储过程的名称即可。当然,如果有参数,则需要带一个参数。代码见下图,然后进入下一步。

5、随后,完成上述步骤后,再次查看“JingYan”表中的数据,可以看到当前数据已经是四个,这表明对存储过程的调用已成功插入了新数据,如下图所示,然后进入下一步。

6、接着,完成上述步骤后,添加另一个存储过程,该存储过程使用select语句返回表数据,如下图所示,然后进入下一步。

7、最后,完成上述步骤后,调用新的存储过程,可以看到结果中已经返回了表数据,如下图所示。这样,问题就解决了。

二、mysql怎么让一个存储过程定时执行

mysql怎么让一个存储过程定时执行

查看event是否开启: show variables like'%sche%';

将事件计划开启: set global event_scheduler=1;

关闭事件任务: alter event e_test ON COMPLETION PRESERVE DISABLE;

开户事件任务: alter event e_test ON COMPLETION PRESERVE ENABLE;

创建表 CREATE TABLE test(endtime DATETIME);

update examinfo SET endtime= now() WHERE id= 14;

CREATE EVENT if not exists e_test

每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去

1)首先来看一个简单的例子来演示每秒插入一条记录到数据表

CREATE TABLE aaa(timeline TIMESTAMP);

DO INSERT INTO test.aaa VALUES(CURRENT_TIMESTAMP);

ON SCHEDULE AT CURRENT_TIMESTAMP+ INTERVAL 5 DAY

3) 2007年7月20日12点整清空test表:

ON SCHEDULE AT TIMESTAMP'2007-07-20 12:00:00'

5) 5天后开启每天定时清空test表:

STARTS CURRENT_TIMESTAMP+ INTERVAL 5 DAY

6)每天定时清空test表,5天后停止执行:

ENDS CURRENT_TIMESTAMP+ INTERVAL 5 DAY

7) 5天后开启每天定时清空test表,一个月后停止执行:

STARTS CURRENT_TIMESTAMP+ INTERVAL 5 DAY

ENDS CURRENT_TIMESTAMP+ INTERVAL 1 MONTH

[ON COMPLETION [NOT] PRESERVE]可以设置这个事件是执行一次还是持久执行,默认为NOT PRESERVE。

8)每天定时清空test表(只执行一次,任务完成后就终止该事件):

[ENABLE| DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE。

[COMMENT‘comment’]可以给该事件加上注释。

[ON COMPLETION [NOT] PRESERVE]

3)将每天清空test表改为5天清空一次:

DROP EVENT [IF EXISTS] event_name

当然前提是这个事件存在,否则会产生ERROR 1513(HY000): Unknown event错误,因此最好加上IF EXISTS

ON SCHEDULE AT'2007-09-01 12:00:00'+ INTERVAL 1 DAY

do insert into yyy values('hhh','uuu');

解释:从2007-09-01开始,每天对表yyy在12:00:00进行一个插入操作。而且只执行一次(on completion not preserve)

ON SCHEDULE AT'2010-05-22 23:00:00'+ INTERVAL 1 DAY

do truncate table bjproj.ae_tmp;

三、通过设定全局变量event_scheduler的值即可动态的控制事件调度器是否启用。

查看是否event_scheduler开启mysql> SHOW VARIABLES LIKE'%event%';

设置开启mysql> SET GLOBAL event_scheduler=ON;

分钟插入一条日志:DELIMITER//CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1

MINUTE STARTS'2010-12-27 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO

BEGIN INSERT INTO log SET addtime=NOW();END//

//CREATE EVENT `user_log_event` ON SCHEDULE EVERY 1 DAY STARTS

'2010-00-00 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN

三、mysql关于在存储过程中修改表的数据

1、在MySQL中,修改存储过程中表的数据,可以使用多种方法。例如,SE16N用于批量数据修改,在条件选择界面时,输入‘&SAP_EDIT’,执行后进入可编辑状态。SE30则是通过ABAP更新语句来修改批量数据的工具。SE16N_INTERFACE函数同样可以用来修改批量数据,提供了更灵活的操作方式。此外,SM30用于修改拥有维护视图的表数据,确保数据的准确性和完整性。

2、在使用这些工具时,需要确保操作的正确性和安全性。例如,在SE16N中,用户可以根据条件选择需要修改的数据行,然后进行批量更新。而在SE30中,ABAP更新语句则提供了更详细的更新逻辑,可以根据具体的业务需求来定制更新规则。

3、SE16N_INTERFACE函数则提供了一种更为程序化的数据修改方式,开发者可以根据需求编写相应的逻辑来实现数据的批量修改。这种方式的优点在于灵活性高,可以根据实际业务场景来调整更新规则。

4、最后,SM30主要用于修改维护视图的表数据。维护视图是用于展示和管理数据的虚拟表,通过修改这些视图的数据,可以间接影响到基础表的数据。这种操作方式通常用于需要展示特定数据视图的场景。

5、总的来说,通过这些工具和方法,可以灵活地修改存储过程中的表数据,满足不同的业务需求。在实际操作中,需要根据具体情况进行选择和使用,以确保数据的安全性和准确性。