在 SELECT 语句中绑定变量
Bind variables in SELECT statement
我的 Oracle 数据库中有 table
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';
现在我需要在 W_TEST_000.MY_TABLE
subtable 的 SELECT 语句中同时使用 :Project_Schema
和 :SampleSet_ID
,如下所示:
SELECT NAME FROM :Project_Schema.MY_TABLE WHERE SS_ID = :SampleSet_ID
但这不起作用..(ORA-00903:无效的 table 名称)
将来如何在同一 SQL*Plus 脚本中的 SQL 请求中使用绑定变量?
如果您将选择封装在 PL/SQL 块中,它将起作用,例如
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;
我的 Oracle 数据库中有 table
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';
现在我需要在 W_TEST_000.MY_TABLE
subtable 的 SELECT 语句中同时使用 :Project_Schema
和 :SampleSet_ID
,如下所示:
SELECT NAME FROM :Project_Schema.MY_TABLE WHERE SS_ID = :SampleSet_ID
但这不起作用..(ORA-00903:无效的 table 名称)
将来如何在同一 SQL*Plus 脚本中的 SQL 请求中使用绑定变量?
如果您将选择封装在 PL/SQL 块中,它将起作用,例如
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;