我正在进行数据迁移,在oracle11g中转换sybase查询,在过去的两天里我一直在做这件事
@Declare @myDate Datetime
Select @myDate = workingDate from MyTable
然后,很少有sql语句在where子句中使用varaible mydate
对于前
Select * form table1
join table1 on table1.id = table.id
join table1 on table1.id = mytable.id
where mytable.workingDate = my_date
//最后,我想声明一个变量,该变量将从select子句中获取其值,并在复杂查询的进一步sql语句中使用它
我希望在oracle11g中实现同样的功能,而不增加任何复杂性
我是甲骨文的新手,需要你的帮助。
2条答案
按热度按时间baubqpgj1#
您使用的是sqlplus吗:我认为您不能声明sqlplus时间戳变量。
请尝试使用varchar2变量并转换为时间戳:
yyhrrdl82#
variable
不支持日期或时间戳。最后的查询也应该使用:my_date
(表示主机变量),而不是my_date
.如果目标是使用前一步中填充的变量填充表,那么可以对整个任务使用pl/sql,例如。
或者更好的是,定义pl/sql包来封装处理逻辑。
关于您发布的代码,从oracle 12.1开始,您可以在pl/sql中声明一个ref游标,并让sql*plus等客户机调用该块并打印结果:
对于早期的oracle版本,您仍然必须在sql*plus中将ref cursor声明为主机变量:
(或
set autoprint off
然后print results
明确地。)但是我不懂java,所以我不知道上面的方法是否适用于您的环境。