如何在另一个 sql 语句中使用 select 结果

How to use a select result in another sql statement

在 SQL*Plus 脚本中我想使用

的结果
select SUBSTR(file_name, 0, INSTR(file_name,'\',-1,1)) 
   into :oradataPath 
from dba_data_files where ROWNUM = 1;

在以下语句中:

CREATE TABLESPACE DEMO DATAFILE '&oradataPath\DEMO.DBF';

但是 SQL*Plus 询问我 oradataPath

的值

您可能需要动态sql;例如:

declare
  vOradataPath varchar2(100);
  vSQL         varchar2(1000);
begin
  select SUBSTR(file_name, 0, INSTR(file_name,'\',-1,1)) 
   into vOradataPath 
  from dba_data_files
  where ROWNUM = 1;
  --
  vSQl := 'CREATE TABLESPACE DEMO DATAFILE ''' || vOradataPath || '\DEMO.DBF''';
  execute immediate vSQL;
end;