2017-02-16 72 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) 

然后你就可以使用通用代码中使用的数据