存储过程中声明默认值为当前时间戳的变量报错如何解决?
问题解决:DB2存储过程中设置TIMESTAMP变量默认值为当前时间
原因分析
DB2存储过程的变量声明语法规定,DEFAULT关键字后仅支持字面量,而CURRENT TIMESTAMP属于特殊寄存器,不属于字面量范畴,因此直接在声明时使用会触发SQLCODE=-104的语法错误。
正确实现方式
方式一:声明后通过SET语句赋值
这是你已经验证可行的方案,兼容性最强:
DECLARE VSTART TIMESTAMP; SET VSTART = CURRENT TIMESTAMP;
方式二:调用标量函数作为默认值(版本依赖)
部分DB2版本支持使用带括号的CURRENT_TIMESTAMP()标量函数作为默认值,可直接写在声明语句中:
DECLARE VSTART TIMESTAMP DEFAULT CURRENT_TIMESTAMP();
注:该方式的可用性取决于DB2的具体版本及运行环境,优先推荐方式一保障兼容性。
内容的提问来源于stack exchange,提问作者DB2fan
相关产品推荐
相关产品推荐

