在Oracle数据库中声明临时变量

时间:2012-05-10 07:45:54

标签: sql oracle variables

我之前曾在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数据库中做同样的事情。

请帮助!

2 个答案:

答案 0 :(得分:1)

如果要在不使用PL / SQL的情况下在SQL * Plus中执行此操作,可以使用substitution variables

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;

column指令中的new_value clause会自动将以下任何选择中的值分配给局部变量,我在l_之前添加了该变量,但您可以调用任何内容。然后,您可以使用&变量替换语法在将来的查询中引用该局部变量。

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

答案 1 :(得分: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语句,但是如果你在编程块中使用它,比如一个过程。

希望有所帮助