SQL-如何声明变量

时间:2019-10-22 20:25:48

标签: sql oracle

我具有以下Oracle SQL语法:

select effective_date
from table
 where effective_date >= to_date(:processingDate, 'yyyymmdd')

我的错误是

  

'processingDate'未声明。

问题:这个标记“:”是什么意思?我需要指定什么是“ processingDate”吗?如果可以,怎么办?

谢谢!

2 个答案:

答案 0 :(得分:2)

这可能是一个变量(varchar(8)nvarchar(8)char(8)nchar(8)中的任何一个,因为您将其匹配为8个字符的固定日期格式)。

某些系统在名称前使用:来表示变量名。有些使用?。其他人则使用@。其他人根本不需要任何主角。

要知道什么适合您的数据库,我们需要知道您正在使用哪种数据库。 to_date()将其范围缩小到Oracle或Postgresql,但这还不够,因为我也看到了报告工具,无论最终的数据库平台如何,它们都在变量名之前使用:

但是您可能不想只为变量添加DECLARE语句。除非变量已经具有有意义的值,否则变量本身在这里没有帮助。您需要找出该值的来源,并确保已设置系统以正确提供它。

答案 1 :(得分:1)

如果要在sql * plus或任何工具中单独执行查询,则可以定义此变量并使用curl "http://localhost:5000/project-name/us-central1/runMyFunction?someDocumentId=some-someDocumentId-hash&anotherDocumentId=some-anotherDocumentId-hash" 变量来使用。 Error: HTTP Error: 400, Request contains an invalid argument.用于oracle中的绑定变量。

替换变量使用substitution声明。

所以您的案子可以这样:

:

干杯!