【发布时间】:2014-09-30 16:05:38
【问题描述】:
我有以下 PL/SQL 块,它工作正常。我想从另一个 PL/SQL 块调用这个函数 (TimeToFrame)。
我无法在存储在数据库中的过程或包中声明此函数。换句话说,我如何从另一个 pl/sql 调用 pl/sql,其中 pl/sql 都是匿名块??
如果我将该函数放在一个单独的 .sql 文件中会怎样。我不能从我的匿名块中调用那个 .sql 文件并传递一些 IN 参数并让那个 fct 返回 OUT 参数吗?
Declare
nTime Number;
FUNCTION TimeToFrame(pTime IN Varchar2)
return NUMBER IS
nTime NUMBER;
BEGIN
select (SUBSTR(pTime, 1, 2) * 108000)+(SUBSTR(pTime, 4, 2) * 1800)+(SUBSTR(pTime, 7, 2) * 30)+SUBSTR(pTime, 10, 2)
into nTime
from dual;
return nTime;
END TimeToFrame;
Begin
nTime:=TimeToFrame('47:59:59:29');
DBMS_OUTPUT.PUT_LINE(nTime);
End;
【问题讨论】:
-
Reasons to use subprograms:可重用性。不允许子程序(命名块)似乎是一个奇怪的限制。