oraclesql:声明变量并在其他查询中使用该变量

mm9b1k5b  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(512)

我是oracle数据库的新手,在声明变量和在其他查询中使用变量时遇到了一些问题。例如,我想创建一个名为caseid的变量,用它存储基于select语句的数字。然后我想在我想创建的其他查询中使用这个caseid。这就是我所拥有的:

DECLARE
   caseID NUMBER;
BEGIN
   SELECT case_id FROM cases WHERE user_id = 'test';
END;

SELECT * FROM version where case_id = :caseID
MINUS
SELECT * FROM version where version_type = 'A'

我无法在版本查询中使用caseid,弹出窗口让我输入caseid是什么。

eqqqjvef

eqqqjvef1#

使用sqlplus,您可以尝试声明一个sqlplus变量(这也应该适用于任何与此类变量声明兼容的gui工具,如sqldeveloper、toad等):

variable caseID number;
BEGIN
   SELECT case_id INTO :caseID FROM cases WHERE user_id = 'test';
END;
/
select * from version where case_id = :caseID;

另一种不使用特殊客户机语法而只使用pl/sql的可能性是:

DECLARE
caseID number;
v version%ROWTYPE;
BEGIN
   SELECT case_id INTO caseID FROM cases WHERE user_id = 'test';
   SELECT * INTO v FROM version WHERE case_id = caseID;
END;
/

但在这种情况下,您必须用pl/sql对所有内容进行编码,并确保处理select语句的输出。

cwdobuhd

cwdobuhd2#

我想你要找的是 @set 命令输入 DBeaver 要立即定义和分配它并在会话中使用它,请执行以下操作:

@set userId='test'
@set caseId=(SELECT case_id FROM cases WHERE user_id = :userId)
SELECT * FROM version where case_id = :caseId

相关问题