在 Oracle 过程中的字符串中调用函数

DMS*_*DMS 2 oracle plsql dynamic-sql oracle10g plsqldeveloper

我使用 Oracle 10g 编写一个应用程序。

我目前面临这个问题。我将“文件名”作为 varchar2 类型的参数。

文件名可能包含的示例值是:'TEST || to_char(sysdate, 'DDD')'.

在该过程中,我想获取该文件名的值,如 TEST147 中所示。当我写:

select filename
into ffilename
from dual;
Run Code Online (Sandbox Code Playgroud)

我得到值 ffilename = TEST || to_char(sysdate, 'DDD') 这是有道理的。但是我怎样才能解决这个问题并调用字符串值中的函数呢?

帮助表示赞赏。谢谢。

Ton*_*ews 5

您示例中的字符串值是无效表达式;它应该是:“测试”|| to_char(系统日期, 'DDD')

要评估您可以这样做:

execute immediate 'begin :result := ' || filename || '; end;'
  using out v_string;
Run Code Online (Sandbox Code Playgroud)

v_string 将包含“TEST147”。