2016-03-04 45 views
0

我在Oracle數據庫表甲骨文 - 綁定變量在SELECT語句

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請求中使用綁定變量?

+0

您可以使用動態SQL這一點。嘗試[執行語句](https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/executeimmediate_statement.htm) –

回答

0

,如果你在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; 
+0

你變的作品,謝謝! – Alexander

+0

但是,如果SAMPLESET位於名稱所在的表格中:Project_Schema變量,如何訪問它?我的意思是W_TEST_000.SAMPLESET,然後如果我鍵入Select:Project_Schema.SAMPLESET ..它不起作用。 – Alexander

+0

嗨@Alexander,這個答案解決了你的問題嗎?你能否將問題標記爲答案並將答案標記爲已接受?這將有助於增加我們的聲譽點=) –