如何在 pl\sql oracle db 中运行具有给定参数的 exe 文件
Posted
技术标签:
【中文标题】如何在 pl\\sql oracle db 中运行具有给定参数的 exe 文件【英文标题】:how to run an exe file with given parameters in pl\sql oracle db如何在 pl\sql oracle db 中运行具有给定参数的 exe 文件 【发布时间】:2021-12-14 06:08:54 【问题描述】:我正在将 oracle 表单代码转换为 oracle 存储过程,因此我需要您的帮助。 谁能告诉我如何在 plsql 代码中运行带有参数的 exe 文件?我已经尝试了很多方法来做到这一点。你可以在下面看到它的示例代码。
这是我的代码
DECLARE
v_onay NUMBER;
CURSOR c1 IS
SELECT id
FROM t1
WHERE tarih = :main.tarih
AND creditid IN
(SELECT kredid FROM t2 WHERE tarih = :main.tarih)
ORDER BY id;
AppID PLS_INTEGER;
BEGIN
v_onay := sor('GİRİLEN TARİH İÇİN GEÇ YAPILAN ÖDEMELERİ TEKRAR ÇALIŞTIRMAK İSTİYOR MUSUNUZ? ');
IF v_onay = 1 THEN
entegre.Krdtfrs9_Doldur(1, :main.tarih);
mess('Kayıtlar güncellendi. OUTPUT verileri hazırlanacak', 0);
FOR r1 in c1 LOOP
COMMIT;
AppID := DDE.App_Begin('C:\Muhasebe\tfrs\Krd\ID\TFRS9KRD_ID.exe ' ||
TO_CHAR(:main.tarih, 'DD.MM.YYYY') || ' ' ||r1.id,
DDE.App_Mode_Maximized);
END LOOP;
END IF;
mess('Güncelleme tamamlandı', 0);
END;
非常感谢。
【问题讨论】:
您不能直接从 PL/SQL 执行操作系统文件或程序。正如 Littlefoot 在他的回答中所建议的,您必须使用间接方法。 是的,我想,谢谢。 【参考方案1】:据我所知,如果您想从 PL/SQL 存储过程运行操作系统可执行文件,您可以使用DBMS_SCHEDULER
内置包调度它。
类似这样的:
您将传递 tarih
和 id
作为过程的参数。
SQL> CREATE OR REPLACE PROCEDURE p_exe (par_tarih DATE, par_id NUMBER)
2 AS
3 l_name VARCHAR (20) := 'GUNES';
4 l_tarih VARCHAR2 (10) := TO_CHAR (par_tarih, 'dd.mm.yyyy');
5 BEGIN
6 -- drop job if it already exists
7 BEGIN
8 DBMS_SCHEDULER.drop_job (l_name);
9 EXCEPTION
10 WHEN OTHERS
11 THEN
12 NULL;
13 END;
14
15 -- create a new job
16 DBMS_SCHEDULER.create_job (
17 job_name => l_name,
18 job_type => 'EXECUTABLE',
19 job_action => 'C:\Muhasebe\tfrs\Krd\ID\TFRS9KRD_ID.exe',
20 number_of_arguments => 2,
21 enabled => FALSE);
22
23 -- set arguments
24 DBMS_SCHEDULER.set_job_argument_value (job_name => l_name,
25 argument_position => 1,
26 argument_value => par_tarih);
27 DBMS_SCHEDULER.set_job_argument_value (job_name => l_name,
28 argument_position => 2,
29 argument_value => par_id);
30
31 -- enable job
32 DBMS_SCHEDULER.enable (l_name);
33 END;
34 /
Procedure created.
SQL>
【讨论】:
感谢您的回复,它运作良好@Littlefoot 不客气,如果有帮助我很高兴。以上是关于如何在 pl\sql oracle db 中运行具有给定参数的 exe 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用其他 pl/sql 块在 Oracle db 中输出信息?
为了对存储在 Oracle db 中的数据运行搜索查询,在 PL/SQL 中使用 REGEXP 是不是比在 Java 正则表达式中获取所有数据并过滤它更快?