繁体   English   中英

在Oracle SQL Developer中使用动态变量

[英]Using Dynamic Variables in Oracle SQL Developer

尝试在Oracle SQL Developer中设置WHILE LOOP,但是尝试设置/定义变量时遇到很多麻烦。 我曾经在PHP中工作过,在PHP脚本中会对此进行声明。

这是我下面的内容。 该脚本尚未完成,基本上,我将在完成后的数周内将其循环。

VARIABLE MYDateVar2 varchar2(40);
EXEC :MYDateVar2 := '01-JAN-14';

select customer_name, 
sum(CASE when to_char(to_date(PLANNED_SHIP_DATE), 'WW') = 40 then (REVISED_QTY_DUE - QTY_SHIPPED) * SALE_UNIT_PRICE end) as Wk40
from customer_order_join 
where planned_ship_date >= :MYDateVar2 
group by customer_name;

所以我很难将变量'MYDateVar2'重新放回脚本中。 我曾尝试使用@@和:,但是Oralce SQL Developer不断提示我输入值。 我也知道我应该将varchar设置为DATE,但是现在应该没问题。

有人可以让我知道如何在脚本中正确插入变量吗? 谢谢!

只要您告诉SQL Developer运行整个脚本,而不仅仅是select语句,您所做的就很好。 您需要运行脚本(F5),而不是运行语句(Ctrl + Enter)。 如果它独立运行该语句,则它将始终提示您输入绑定变量值。

不直接相关,但是...大概您使用了对客户的NLS设置有效的日期格式,但是您不应该依赖该格式。 始终明确设置格式是比较安全的:

where planned_ship_date >= to_date(:MYDateVar2, 'DD-MON-RR')

但是,如果要循环,则需要编写PL / SQL,因此您最好在块内部而不是在客户端级别声明变量,除非要将相同的值传递给多个块或存储过程调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM