2014-04-18 22 views
1

更新变量我使用Oracle SQL Developer中,有一个相当大的查询生成。查询将按月或按季度运行。我想知道是否有一种方法可以在顶部声明语句,然后在代码中引用这些创建的变量。这样,当有人想要运行查询时,他们只需更改代码顶部的日期,而不必再遍历所有的日期。我有点新的Oracle SQL Developer,但我知道在其他的SQL代码我建我可以简单地声明变量,然后将其设置,然后在代码中调用的变量名。下面是我知道该怎么做的一个例子,但我在Oracle SQL Developer中遇到了麻烦。创建简单的方法来在大型代码

示例:我有一个包含列业务,业务类型(小,中,大)的存款,存款金额,保藏日期号码数据的基础上。我想构建一个查询,输出存款数量和存款金额的季度摘要,并能够更改业务的季度和大小。

示例代码从我以前的SQL豁达这是什么,我试图做的,因为我不能透露他们与我的表名称代码等的例子。

Declare @busstype,@qbegindate,@qenddate 
Set @busstype = 'small' 
Set @qbegindate = '01-JAN-2013' 
Set @qenddate = '01-MAR-2013' 

Select business,numberofdeposits,depositamount 

From business_transactions 

Where ('@qbegindate'<=depositdate<='@qenddate' 
And businesstype = '@busstype') 
Group By Business 

结果将列出了企业名称,然后在总存款和总金额。 我知道这个代码是不正确的,但它只是我在寻找什么Oracle SQL Developer中做榜样。我建立的查询工作正常我只是发现通过代码来改变日期和标准是一个痛苦,并想知道我将如何做这样的事情,因为我已经知道我无法在ORACLE Sql中执行此操作开发人员。

+0

http://stackoverflow.com/questions/4672019/run-sql-code-with-variables-in-oracle-sql-developer-code-window – vav

+0

我不知道的SQLDeveloper,但在你可能使用“define”来实现你需要的sqlplus。然后,您将通过在“where&begindate ...”前面加上一个前缀来引用定义的值。 –

回答

1

这里是与预定义的变量的例子:

set feedback off 
var abc varchar2 

begin 
:abc := 'abc'; 
end; 
/

select :abc as a from dual; 

输出:

A        
-------------------------------- 
abc 
+0

+1但值得注意的是,只有在与“Run Script(F5)”一起使用时,才会在SQL Developer中起作用。 –

+0

你可以把脚本放在一个文件中并使用@“\ yourpPath \ yourscript.sql” – vav

1

公用表表达式允许在查询的顶部被定义的变量。由于性能和样式的原因,这通常不是 使用公用表表达式的好方法。其优点是这种查询可以在运行任何 IDE,它是完全独立的。

--Variables - change these before running. 
with busstype as (select 'small' value from dual), 
    qbegindate as (select date '2013-01-01' value from dual), 
    qenddate as (select date '2013-03-01' value from dual) 
--Query - do not modify code below. 
select business,numberofdeposits,depositamount 
from business_transactions 
where depostiddate between 
     (select value from qbegindate) 
     and 
     (select value from qenddate) 
    and businesstype = (select value from busstype) 
group by business, numberofdeposits,depositamount; 
+0

执行谢谢你的回应。我会试试这些。该项目暂停了几个星期,所以我没有回来。如果我能够使用它,我将在此发布。 – user3549613

相关问题