【发布时间】:2014-11-13 13:20:30
【问题描述】:
我有一个关于在 PL/SQL 包中使用全局变量的理解问题。 我在包的规范中声明了一个全局变量。
--> g_processid VARCHAR2 (30);
在同一个包的主体中,我在首先使用的过程中初始化变量 在我的过程中。这很好用。变量的结果不为空。
之后,主会话开始另一个过程 16 次。所以我有 16 个并行作业做同样的事情。
片段:
FOR i IN 1 .. p_process_count
LOOP
DBMS_JOB.submit (job => v_job_sid,
what => p_jobname
|| '('
|| i
|| ','
|| p_process_count
|| ');',
next_date => SYSDATE,
no_parse => FALSE
);
....
v_job_counter := v_job_counter + 1;
v_tab_kuba_jobs (v_job_counter) := v_job_sid;
COMMIT;
IF p_process_count > 0
AND i = 1 THEN
-- 60 Sekunden Pause
DBMS_LOCK.sleep (180);
END IF;
END LOOP;
在线程使用的过程中,我想使用我的全局变量。 我以这种方式调用变量: . 我的问题是 Thread 中的变量是空的。
也许是因为这些进程没有使用我的包的同一个实例。 我必须做些什么才能使我的变量可用于我的所有会话。
感谢您的推荐。我appriciate任何形式的建议。
最好的问候 约恩
【问题讨论】:
-
您可以将变量存储在表中,并创建一个返回该值的函数。这不是一个有效的解决方案,但它可能有助于解决您的问题
标签: oracle plsql functional-programming