1

我以前使用过 SQL Server,并且能够学习如何创建临时变量并在 SQL 中使用它们

我曾经写过这样的东西:

declare @Student nvarchar(255)

select @Student = studentname from sometable where somecondition = 1

declare @teacher nvarchar(255)

select @teacher = teachername from sometable2 where somecondition >2

接着

select @student, @teacher, other columns from sometable where some condition

我想在 ORACLE 数据库中做同样的事情。

请帮忙!

4

2 回答 2

1

如果您想在 SQL*Plus 中执行此操作而不使用 PL/SQL,则可以使用替换变量

column studentname new_value l_studentname
select studentname from sometable where somecondition = 1;

column teachername new_value l_teachername
select teachername from sometable2 where somecondition >2;

select '&l_studentname', '&l_teachername,' other columns
from sometable where somecondition;

指令中的new_value子句column自动将任何后续选择中的值分配给一个局部变量,我已经预先添加了该变量,l_但您可以调用任何内容。然后,您在以后的查询中使用&变量替换语法引用该局部变量。

您几乎可以在通常有价值的任何地方使用它们。例如在where子句中。请注意,文本值必须用引号引起来,因此'&l_studentname'; 如果没有引号,在这种情况下,该将被解释为列名,这是行不通的。

于 2012-05-10T11:52:38.623 回答
0

你可以声明一个变量说

SOME_VAR VARCHAR2(255);

然后直接在查询中使用它

SELECT DISTINCT YT.TEACHER_NAME
  INTO SOME_VAR 
  FROM YOUR_TABLE YT
WHERE YT.TEACHER_ID = 1;

然后您可以自由使用此变量 ,SOME_VAR以供进一步使用

当然,这不适用于简单的 SQL 语句,但如果您在程序块中使用它,例如过程。

希望能帮助到你

于 2012-05-10T07:51:36.410 回答