Oracle SELECT语句中的绑定变量
我的Oracle数据库中有表Oracle SELECT语句中的绑定变量,oracle,sqlplus,Oracle,Sqlplus,我的Oracle数据库中有表 PROJECTINFO NAME SCHEMA -------------------------- Test W_TEST_000 SAMPLESET NAME SS_ID -------------------------- Test_SSet 1049 在我的SQL*Plus脚本中,有一个替换变量(直接设置或通过用户输入设置) 现在我需要另外两个绑定变量 VAR Project_Schema varcha
PROJECTINFO
NAME SCHEMA
--------------------------
Test W_TEST_000
SAMPLESET
NAME SS_ID
--------------------------
Test_SSet 1049
在我的SQL*Plus脚本中,有一个替换变量(直接设置或通过用户输入设置)
现在我需要另外两个绑定变量
VAR Project_Schema varchar2(50)
VAR SampleSet_ID number
然后我需要将SELECT语句的结果放入两个bind变量中
SELECT SCHEMA INTO :Project_Schema FROM PROJECTINFO WHERE NAME = '&Project_Name';
SELECT SS_ID INTO :SampleSet_ID from SAMPLESET WHERE NAME = '&SampleSet_Name';
现在,我需要在W\u TEST\u 000的SELECT语句中同时使用:Project\u Schema
和:SampleSet\u ID
。我的表
子表如下:
SELECT NAME FROM :Project_Schema.MY_TABLE WHERE SS_ID = :SampleSet_ID
但这是行不通的。。(ORA-00903:表名无效)
如何在同一个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;
您可以为此使用动态SQL。不过,请尝试一下,若SAMPLESET位于名称位于:Project_Schema变量中的表中,那个么如何访问它?我的意思是W_TEST_000.SAMPLESET,如果我键入Select:Project_Schema.SAMPLESET。。它不起作用。嗨@Alexander,这个答案解决了你的问题吗?你能把问题标记为已回答,把答案标记为已接受吗?这将有助于增加我们的分数=)你能更具体地说明你想要什么吗?在您的示例中,SAMPLESET是一个表,它位于project_模式中的一个表中,这意味着什么?很抱歉造成这种混淆。。请看我文章的最后一部分-现在我必须从表
W\u TEST\u 000中进行选择。我的表但是变量Project\u Schema
中有W\u TEST\u 000
。因此,我需要执行如下操作:从:Project\u Schema.MY\u表中选择名称,其中SS\u ID=:SampleSet\u ID
。我的问题是-如何正确地编写此请求(在FROM
之后的部分)?您可以使用ref游标,也可以只使用动态SQL执行立即“SELECT NAME FROM'| |:PROJECT|u SCHEMA'| |'。My_表,其中SS|u ID=:SampleSet|ID'使用:SampleSet|u ID
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;