Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Oracle SQL Developer中使用动态变量_Sql_Oracle_Oracle Sqldeveloper - Fatal编程技术网

在Oracle SQL Developer中使用动态变量

在Oracle SQL Developer中使用动态变量,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,试图在OracleSQLDeveloper中设置WHILE循环,但我在设置/定义变量时遇到了很多麻烦。我习惯于在PHP中工作,我会在PHP脚本中声明这一点 下面是我的资料。脚本还没有完成,我基本上会让它在完成后的几周内循环 VARIABLE MYDateVar2 varchar2(40); EXEC :MYDateVar2 := '01-JAN-14'; select customer_name, sum(CASE when to_char(to_date(PLANNED_SHIP_DATE

试图在OracleSQLDeveloper中设置WHILE循环,但我在设置/定义变量时遇到了很多麻烦。我习惯于在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)。如果它独立运行语句,那么它将始终提示输入bind变量值

不直接相关,但。。。假设您使用的日期格式对客户端的NLS设置有效,但不应依赖于此;始终显式设置格式更安全:

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

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

这显然让我越过了这个障碍。但我确实丢失了漂亮的表结构视图,不能右键单击“导出到Excel”。现在是否需要在脚本中添加导出命令?谢谢对,您不再在“网格视图查询结果”窗口中获得结果。您的脚本可能会从不同的表中进行多个选择,这将使网格视图变得不切实际。您可以将结果假脱机到一个文件(或多个文件),但这取决于您接下来要做什么。不过,我不确定这与循环有什么关系。