Oracle声明变量语法
使用“SQL Navigator”将SQL转换为Oracle,以便在声明变量时测试并运行语法问题。我读过其他相关的文章,但似乎没有任何效果 目标是以YYYYMMDD格式的字符串形式将变量“strDate”设置为当前日期 我尝试过的代码是:Oracle声明变量语法,oracle,Oracle,使用“SQL Navigator”将SQL转换为Oracle,以便在声明变量时测试并运行语法问题。我读过其他相关的文章,但似乎没有任何效果 目标是以YYYYMMDD格式的字符串形式将变量“strDate”设置为当前日期 我尝试过的代码是: declare strDate := TO_CHAR(sysdate, 'YYYYMONDD'); BEGIN SELECT ColumnA a, ColumnB b, ColumnC c from table1, table2 where stringc
declare
strDate := TO_CHAR(sysdate, 'YYYYMONDD');
BEGIN
SELECT ColumnA a, ColumnB b, ColumnC c
from table1, table2
where stringcolumn = strDate;
end;
错误结果为:
“ORA-06550;第2行第10列:…在预期….时遇到符号“=”
还尝试:
var strDate varchar2(8)
exec :strDate := TO_CHAR(sysdate, 'YYYYMONDD')
BEGIN
SELECT....;
end;
查询本身是一个联合查询,我可以使用硬编码的值运行各个“部分”。由于某种原因,它似乎无法接受变量。正确的语法应该是:
declare
DateFrom varchar2(20):= TO_CHAR(sysdate, 'YYYYMONDD');
...
那不应该是
varchar2(9)
,而不是date
;因为它被设置为to_char
?这样它就不再抛出相同的错误,而是说,“在这个SELECT语句中应该有一个INTO子句…”@user1330259-这是一个完全不同的问题;将一个问题转化为几个问题,或者转化为PL/SQL教程,这是不公平的。select
的PL/SQL版本为。但是,还不完全清楚您是否真的希望在PL/SQL块中使用它-这取决于您希望如何处理select
检索到的数据。请理解并为该加载项道歉。谢谢你的参考。第二个版本应该可以使用(除了你的格式模型是9个字符,而不是8个字符;你是指MM而不是MON吗?);但是如何在查询中使用该变量,会出现什么错误?我猜你后来并没有把它称为:strDate
。是的,我是说MM-很好,谢谢!更正了上面的:strDate vs:DateFrom。在第二个版本中,您可以在查询中使用bind变量作为普通SQL,像中的stringcolumn=:strDate那样引用它,而不使用开始/结束
。看起来您可能添加了PL/SQL包装器来允许变量?但不知道SQL Navigator是否支持var
。