如何在Oracle PL/SQL where子句中使用变量

Mat*_*ttB 7 oracle variables plsql

我似乎无法在Oracle PL/SQL where子句中使用变量.我来自Microsoft SQL Server背景,很简单.例如,执行类似以下操作所需的所有步骤是什么?

declare @var int set @var = 1

select * from SomeTable where SomeField = @var
Run Code Online (Sandbox Code Playgroud)

这看起来似乎不应该在PL/SQL中很难,但显然它是.: - /我听说我需要在PL/SQL中使用游标等?

任何帮助将不胜感激.谢谢.

Ton*_*ews 11

你想对SELECT返回的数据做什么?如果您只是想看到它,根本不需要PL/SQL,只需在SQL Plus中执行此操作:

variable var number
exec :var := 1

select * from SomeTable where SomeField = :var;
Run Code Online (Sandbox Code Playgroud)

或者在像SQL Developer或Toad这样的工具中,只需执行以下操作:

select * from SomeTable where SomeField = :var;
Run Code Online (Sandbox Code Playgroud)

它会提示您输入以下值:var.

  • 谢谢!这看起来是朝这个方向迈出的一大步.是的,我正在使用Oracle SQL Developer.有什么方法可以将变量嵌入到代码中,并将其显示在弹出式提示符中? (3认同)

Sim*_*mon 5

下面的代码声明了一个varWHERE子句中使用的变量,一个result用于放置结果的变量然后在PL/SQL块中执行它.

DECLARE
   var      INT := 1;
   result   INT;
BEGIN
   SELECT 123
     INTO result
     FROM DUAL
    WHERE var = 1;

   DBMS_OUTPUT.put_line (var);
   DBMS_OUTPUT.put_line (result);
END;
Run Code Online (Sandbox Code Playgroud)

DBMS_OUTPUT.PUT_LINE电话使之产生这个DBMS输出:

1
123
Run Code Online (Sandbox Code Playgroud)