簡體   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