Oracle PL/SQL Developer 中 where 子句中的变量

问题描述 投票:0回答:3

在 ORACLE PL/SQL DEVELOPER 中,我能否像在 SQL Server 中那样轻松地执行以下操作?

DECLARE @EmpIDVar INT

SET @EmpIDVar = 1234

SELECT *
FROM Employees
WHERE EmployeeID = @EmpIDVar

这似乎是一件很简单的事情,但在 Oracle 中似乎不可能做到!

我知道在变量前使用 & 会提示我输入它们的值,但为什么我不能像上面那样做呢?

sql oracle plsqldeveloper
3个回答
0
投票

声明使用

VARIABLE
命令

VARIABLE EmpIDVar NUMBER;

像这样使用

EXEC
设置值

EXEC :EmpIDVar := 1234;

运行查询,在变量前加上

colon

SELECT *
FROM Employees
WHERE EmployeeID = :EmpIDVar;

0
投票

使用 Variable 和 select with IN 子句,也许更有用。

VARIABLE EmpIDVar NUMBER
DEFINE EmpIDVar ="123, 124"
EXEC : EmpIDVar := '& EmpIDVar'

SELECT 
  E.*
FROM Employees E
WHERE EmployeeID IN ( & EmpIDVar )

如果不是,简单地将 IN 替换为“=”,将“123、124”替换为“123”。


0
投票

你好这里可以看到另一个答案

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

 set serveroutput on

 DECLARE 
    EmpIDVar integer; 
    Result integer;

  BEGIN
     EmpIDVar := 2000;


     SELECT Employees_id into Result      
     FROM Employees 
     WHERE Employees_ID = EmpIDVar ;

     dbms_output.Put_line(Result); 
  end;

如果你想显示所有(*),你需要显示所有变量,所以就像我说的,你需要和你的字段一样多的变量。

© www.soinside.com 2019 - 2024. All rights reserved.