如何在同一Oracle SQL脚本中声明变量并使用它?

166

我想编写可重用的代码,并需要在脚本开头声明一些变量,然后在整个脚本中重复使用,例如:

DEFINE stupidvar = 'stupidvarcontent';

SELECT stupiddata
FROM stupidtable
WHERE stupidcolumn = &stupidvar;

我该如何在SQLDeveloper中声明一个变量,并在后续语句中重复使用它?


尝试过的方法

  • 使用DECLARE部分,在BEGIN和END语句块内插入以下SELECT语句。可以使用&stupidvar访问变量。
  • 使用关键字DEFINE并访问变量。
  • 使用关键字VARIABLE并访问变量。

但是在尝试过程中我遇到了各种错误(未绑定变量、语法错误、预期“SELECT INTO”...)。


3
注意,接受的答案中@APC提供的方法可以在不使用PL/SQL的情况下使用,例如在SQL Developer工作表中根据您的问题。只需在一行上声明变量(无分号),然后在exec行上设置其值(以分号结束),然后执行选择语句。最后,将其作为脚本运行(F5),而不是作为语句运行(F9)。 - Amos M. Carpenter
11个回答

-3
有时候你需要使用一个宏变量而不需要让用户输入值。最常见的情况是在可选脚本参数中使用它。下面的代码是完全可用的。
column 1 noprint new_value 1
select '' "1" from dual where 2!=2;
select nvl('&&1', 'VAH') "1" from dual;
column 1 clear
define 1

在rdbms/sql目录中不知何故找到了类似的代码。


1
我收到了:ORA-00900:无效的SQL语句。 - Mattman85208

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接