我正在使用 SQL Developer 19.1。我有一個包含多個子選擇陳述句的巨大腳本。看起來像這樣
def var1 = '1234'
def var2 = '5678'
select a.id
from tablea a
where something.id = (select other.id from .... where number1 = &var1 and number2 = &var2)
我想用另一個選擇陳述句獲取 var1 和 var2。我怎么做?我試過
declare
var1 number;
begin
select somenumber into var1 from ... where ...
end;
但似乎我不能在那里使用 where 陳述句。我也嘗試過使用 bind 或 @var1 的東西..
你們知道我接下來可以嘗試什么嗎?
我的目標是這樣的
var1 = (select somenumber from ... where ... )
uj5u.com熱心網友回復:
如果您想繼續使用替換變數,您可以使用該column ... new_value功能(該檔案適用于 SQL*Plus,但主要適用于 SQL Developer;并專注于將其用于報告標題,但它比建議的更有用):
-- define not needed now
--def var1 = '1234'
--def var2 = '5678'
column var1 new_value var1
select somenumber as var1 from ... where ...
column var2 new_value var2
select somenumber as var2 from ... where ...
select a.id
from tablea a
where something.id = (select other.id from .... where number1 = &var1 and number2 = &var2)
展示這一點的簡單例子;如果作業表有:
column var1 new_value var1
select 1234 as var1 from dual;
column var2 new_value var2
select 5678 as var2 from dual;
select * from dual where 1234 = &var1 and 5678 = &var2;
然后腳本輸出窗格顯示:
VAR1
----------
1234
VAR2
----------
5678
old:select * from dual where 1234 = &var1 and 5678 = &var2
new:select * from dual where 1234 = 1234 and 5678 = 5678
D
-
X
或者你可以使用系結變數:
var var1 number;
var var2 number;
begin
select somenumber into :var1 from ... where ...
select somenumber into :var2 from ... where ...
end;
/
select a.id
from tablea a
where something.id = (select other.id from .... where number1 = :var1 and number2 = :var2)
請注意,對var1和的參考var2現在前面有一個冒號來表示系結變數,而不是一個與號來表示替換變數;并且該冒號也出現在該into :var1部分中 - 仍然指的是系結變數,而不是本地 PL/SQL 變數。
再舉個簡單的例子;作業表腳本:
var var1 number;
var var2 number;
begin
select 1234 into :var1 from dual;
select 5678 into :var2 from dual;
end;
/
select * from dual where 1234 = :var1 and 5678 = :var2;
獲取輸出:
PL/SQL procedure successfully completed.
D
-
X
print var1如果要查看匿名 PL/SQL 塊分配的值,可以使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377457.html
標籤:sql 变量 选择 oracle-sqldeveloper where子句
下一篇:基于文本的游戲的函式呼叫
