在SELECT语句中绑定变量

问题描述 投票:2回答:1

我的Oracle数据库中有一些表

PROJECTINFO
NAME       SCHEMA
--------------------------
Test       W_TEST_000

SAMPLESET 
NAME          SS_ID
--------------------------
Test_SSet     1049

在我的SQL*Plus脚本中,有一个替换变量(直接或通过用户输入设置)

DEFINE Project_Name = 'Test'
DEFINE SampleSet_Name = 'Test_SSet'

现在我需要另外两个绑定变量

VAR Project_Schema varchar2(50)
VAR SampleSet_ID number

然后,我需要将一个SELECT语句的结果放入两个绑定变量之中

SELECT SCHEMA INTO :Project_Schema FROM PROJECTINFO WHERE NAME = '&Project_Name';
SELECT SS_ID INTO :SampleSet_ID from SAMPLESET WHERE NAME = '&SampleSet_Name';

现在我需要同时使用 :Project_Schema:SampleSet_ID 在SELECT语句中 W_TEST_000.MY_TABLE 像这样的子表。

SELECT NAME FROM :Project_Schema.MY_TABLE WHERE SS_ID = :SampleSet_ID

但这并不奏效... (ORA-00903: 无效表名)

如何在同一个SQL*Plus脚本中的未来SQL请求中使用绑定变量?

oracle sqlplus
1个回答
1
投票

如果你将选择封装在PLSQL块中,它将会工作,例如。

DEFINE Project_Name = 'Test'
DEFINE SampleSet_Name = 'Test_SSet'

VAR Project_Schema varchar2(50)
VAR SampleSet_ID number


begin
  SELECT SCHEMA 
    INTO :Project_Schema 
    FROM PROJECTINFO 
   WHERE NAME = '&Project_Name';
end;
/
begin
  SELECT SS_ID 
    INTO :SampleSet_ID 
    from SAMPLESET 
   WHERE NAME = '&SampleSet_Name';
end;
/        

 --test the contents of the variable
Select :SampleSet_ID, :Project_Schema from dual;
© www.soinside.com 2019 - 2024. All rights reserved.