如何在Oracle PL-SQL的select语句中使用变量

Joh*_*Doe 2 oracle

我有一个简单的查询,我可以在toad中运行.

select * from my_table 
where my_id = 11111;
Run Code Online (Sandbox Code Playgroud)

为什么我不能在toad中运行相同的查询,这次声明一个变量并在where子句中使用它?

在sql server中我会:

declare @testID int
set @testID = 11111
select * from my_table 
    where my_id = @testID;
Run Code Online (Sandbox Code Playgroud)

如何在Oracle 11g中完成相同的操作?

XIN*_*ING 6

PLSQL 与 SQL SERVER 不同。它有自己的语法。看看你可以如何做到这一点,如下所示:

DECLARE
   var    NUMBER := 1;
   var2   my_table%ROWTYPE;
BEGIN
   SELECT *
     INTO var2
     FROM my_table
    WHERE my_id = var;

  --To display result you need to add dbsm_output.put_line function.

  dbms_output.put_line(var2.<columnname>);

Exception
When others then
 Null;       
END;
Run Code Online (Sandbox Code Playgroud)

注意:假设查询仅返回一行。


Ton*_*ews 5

在Toad(或SQL Developer)中,您可以这样做:

select * from my_table 
where my_id = :testID;
Run Code Online (Sandbox Code Playgroud)

运行它时,系统将提示您输入testId绑定变量的值.