Oracle存储过程中将SYSDATE格式化存入变量报错问题求助
问题原因
你的代码违反了Oracle PL/SQL中SELECT INTO的语法规则,标准语法结构为:
SELECT 待查询的字段/表达式 INTO 变量名 FROM 表名 [WHERE 条件];
你把INTO子句直接放在SELECT关键字后面,和待查询的表达式顺序搞反了,所以运行会触发语法错误。
解决方案
方案1:修正SELECT INTO语法
CREATE OR REPLACE PROCEDURE XXX AS l_date_string VARCHAR2(50); BEGIN SELECT '['||TO_CHAR (SYSDATE, 'MMDDYYYY-HH24:MI:SS')||']' INTO l_date_string FROM dual; END; /
方案2:直接赋值(更高效,无需查询dual表)
PL/SQL中不需要通过查询dual表给变量赋值,直接用赋值语句即可,性能更好、代码更简洁:
CREATE OR REPLACE PROCEDURE XXX AS l_date_string VARCHAR2(50); BEGIN l_date_string := '['||TO_CHAR(SYSDATE, 'MMDDYYYY-HH24:MI:SS')||']'; END; /
内容的提问来源于stack exchange,提问作者Pugzly
相关产品推荐
相关产品推荐

