2017-02-16 108 views
-2

我是編程新手,我在想如何聲明一個變量,我可以通過我的代碼。PLSQL變量

我想實現的是:

Myvariable = (select Column from table1 where column =1234 group by column); 
select column from table2 where column in (myvariable); 
select column from table3 where column in (myvariable); 

和等提前:)

+2

標籤'sql-server'和'plsql'不能混用。您是使用Microsoft SQL Server還是Oracle? –

+0

我刪除了不兼容的數據庫標籤。請標記您真正使用的數據庫。 –

+0

在sql中你可以通過'DECLARE @variableName DATATYPE'來聲明變量。而選擇查詢的值通過'SELECT @variableName = column FROM table WHERE column = 1234'分配給該變量。 –

回答

0

如果您使用PL/SQL Developer來訪問Oracle數據庫,您可以創建一個測試窗口(F ILE - 新 - 測試窗口)用類似下面的代碼:

DECLARE 
    myVariable TABLE1.COLUMN%TYPE := 1234; 
BEGIN 
    FOR aRow2 IN (SELECT COLUMN 
        FROM TABLE2 
        WHERE COLUMN = myVariable) 
    LOOP 
    DBMS_OUPUT.PUT_LINE('Do something with ''aRow2'''); 
    END LOOP; 

    COMMIT; 

    FOR aRow3 IN (SELECT COLUMN 
        FROM TABLE3 
        WHERE COLUMN = myVariable) 
    LOOP 
    DBMS_OUPUT.PUT_LINE('Do something with ''aRow3'''); 
    END LOOP; 

    COMMIT; 
END; 

你需要編輯任何你想要從表2可以和表3行以上的事情。

祝你好運。

+0

嗨,謝謝你的回覆,我會看看這個。這也只適用於測試窗口嗎?或者這也可以用於SQL窗口。 – Oxy111

+0

要從SQL窗口運行此操作,需要使用鼠標突出顯示'DECLARE'到'END;'的所有文本,然後單擊Execute按鈕(或按F8鍵),以便從一個測試窗口,您需要執行的操作是單擊執行(或按F8鍵)。 –

0

由於這是不是一個真正的變量...你可以寫這樣的SQL

select column 
from table2 
where column in (select Column from table1 where column =1234 group by column); 
+0

嗨,感謝您的回答,我想創建一個工具,我只需要將該號碼更改一次通過我的所有代碼來改變所有數字的存在位置。 – Oxy111

0

您可以使用綁定到當前會話的臨時臨時表,

DECLARE GLOBAL TEMPORARY TABLE temp 
{ 
    column INTEGER 
} 
ON COMMIT DELETE ROWS -- Specify PRESERVE ROWS if you want to keep them through commits 
NOT LOGGED 
ON ROLLBACK DELETE ROWS -- Remove this line if you want to keep rows when you rollback a transaction 

您裝載表:

select column from table2 where column in (select column from temp1); 
select column from table3 where column in (select column from temp1); 

insert into temp1 (select Column from table1 where column =1234 group by column) 

然後你就可以使用通用代碼中使用的數據