我正在尝试让用户将日期输入到替换变量中,但希望提示消息提示用户以正确的格式输入日期。
SELECT claimdate, assessmentid
FROM claimassessment
WHERE claimdate > to_date('&Date_as_yyyy_mm_dd', 'yyyy-mm-dd');
我一直在阅读,我应该使用ACCEPT和PROMPT关键字,但是我使用的是SQL Developer 3.1.07,但这些关键字无法识别。我将如何弹出显示“以yyyy-mm-dd格式输入生效日期”之类的提示。弹出窗口上的默认提示仅显示“输入替代变量”
答案 0 :(得分:2)
选项1:将其构建到您的SUBSTITUTION变量名称中
SELECT *
FROM hr.employees
WHERE hire_date > TO_DATE('&date_mm_dd_yyyy', 'MM-DD-YYYY');
提示中使用日期格式-用户至少会知道您想要2位数字的月份,然后是2位数字的日期,然后是4位数字的年份。
选项2:使用具有绑定变量的报告。
对于报告,我们使用BIND而不是替换变量。您的查询基本上保持不变,只是:X vs&X。好处是您的查询将在优化器中缓存一次,而不是多次,对于每个查询一次。。。尽管数据库的最新副本足够聪明,所以可以自行解决。
您可以在报告中定义提示的标记方式。
报告后面的查询
SELECT *
FROM hr.employees
WHERE hire_date > to_date(:user_date, 'MM-DD-YYYY')
答案 1 :(得分:2)
在SQL Developer 3.1.07.42中可以识别accept和提示符关键字。
这是使用此表格的演示:
accept Date_as_yyyy_mm_dd date format "YYYY-MM-DD" prompt "Enter the effective date in the format 'yyyy-mm-dd'"
使用所需的文本创建提示窗口(在3.1中不需要在提示值两边加上双引号,但我认为它们会变得更清楚;尽管在3.1中也没有保留单引号,但是它们在18.3中),并检查提供的值的格式;然后使用可接受的值:
作为脚本(F5)运行时,将显示带有指定文本的弹出窗口:
如果我输入的值与格式不匹配,则会重新提示:
有一个可接受的值,它在后续语句中使用该替换变量值:
只要您以脚本模式运行accept
,就可以将主查询作为语句(控制输入)运行,以在“查询结果”窗口中的网格中获取结果。 / p>
正如Jeff所提到的,3.1很旧-它似乎已于2012年2月发布-因此您可能要考虑获取更新的版本。