我正在將 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;
多謝。
uj5u.com熱心網友回復:
據我所知,如果您想從 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>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385733.html
上一篇:如何獲取OracleAPEX文本欄位值(現在我得到的一切都是NULL)(OracleAPEXApplicationExpress21.1)
