刚学用db2,在做保存操作时出现以下异常:
SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in bc/tbm/project/model/ProjectDetail.db2.xml. --- The error occurred while applying a parameter map. --- Check the ProjectDetail.getNewProjectId-InlineParameterMap. --- Check the statement (query failed). --- Cause: com.ibm.db2.jcc.b.nm: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2INST1.DUAL, DRIVER=3.50.152
解决方法是:执行一下 CREATE ALIAS DUAL FOR SYSIBM.SYSDUMMY1; 问题就解决了。
以下为转载内容:
DB2中类似于ORACLE中的DUAL表的表
问题 在ORACLE中,数据库用户可以通过访问DUAL表获取一些系统信息,例如:
'SELECT SYSDATE FROM DUAL'命令返回当前系统日期
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
----------
18-12-03
'SELECT 1 + 1 FROM DUAL'执行数学运算
SQL> SELECT 1 + 1 FROM DUAL;
1+1
----------
2
'SELECT MY_SEQUENCE.NEXTVAL FROM DUAL'得到序列值
SQL> SELECT MY_SEQUENCE.NEXTVAL FROM DUAL;
NEXTVAL
----------
2
在DB2中,是否有对应的表?
解答 是的,DB2中存在一个对于的表:SYSIBM.SYSDUMMY1
用户可以通过访问这个表获取相应的信息。
例如:
'SELECT CURRENT DATE FROM SYSIBM.SYSDUMMY1' 命令返回当前系统日期
db2 => SELECT CURRENT DATE FROM SYSIBM.SYSDUMMY1
1
----------
2003-12-18
1 条记录已选择。
'SELECT 1+1 FROM SYSIBM.SYSDUMMY1' 执行数学运算
db2 => SELECT 1+1 FROM SYSIBM.SYSDUMMY1
1
-----------
2
1 条记录已选择。
'SELECT NEXTVAL FOR MYSEQ FROM SYSIBM.SYSDUMMY1' 得到序列值
db2 => SELECT NEXTVAL FOR MYSEQ FROM SYSIBM.SYSDUMMY1
1
-----------
3
1 条记录已选择。
此外,在DB2中,用户还可以用VALUES语句查询上面的值。
例如:
db2 => VALUES CURRENT DATE
1
----------
2003-12-18
1 条记录已选择
分享到:
相关推荐
**注意:** Oracle中的`DUAL`表相当于DB2中的`SYSIBM.SYSDUMMY1`表,用于查询单个值。 #### 十六、时间日期函数 **Oracle:** ```sql SELECT SYSDATE FROM DUAL; ``` **DB2:** ```sql SELECT CURRENT_TIMESTAMP ...
了解并掌握这些差异有助于开发人员更高效地进行数据库迁移工作,避免出现不必要的错误。在进行数据库迁移时,除了考虑SQL语句的差异之外,还应考虑其他方面的问题,比如存储过程、触发器、函数等复杂对象的迁移,...
- Hibernate映射时,DB2的日期字段应映射为TIMESTAMP,而不是DATE,否则会导致截断错误。 5. **分页处理**: - Oracle使用ROWNUM进行分页,如`SELECT * FROM (SELECT ROWNUM AS r1, masa_area.* FROM masa_area ...
在DB2中,可以使用`POSITION`函数来找到一个字符串在另一个字符串中的位置,如:`SELECT POSITION('abc' IN 'abcdef') FROM dual;` ##### 3.8 类似DATEDIF计算两个日期的相差天数 要计算两个日期之间的差值,可以...
例如,`SELECT REVERSE('1234') FROM DUAL`将返回`4321`,而`SELECT REVERSE(1234) FROM DUAL`会导致错误,因为预期接收`CHAR`类型,而非`NUMBER`类型。Oracle的`REVERSE`函数对于包含空格的字符串也会保留空格,如`...
1. **进程错误**:例如用户应用与文件数据库之间的连接异常中断或用户进程发生错误。 2. **文件系统故障**:由于异常操作或其他原因导致文件系统内部的部分信息丢失或不一致。 3. **操作系统故障**:操作系统本身的...
DB2通过`VALUES NEXT VALUE FOR sequence_name`获取下一个序列值,而在Oracle中,我们需要使用`SELECT sequence_name.NEXTVAL FROM DUAL`。这种差异可能导致在迁移过程中需要修改应用代码来适应Oracle的语法。 2. ...
1. **加载Java类错误**:如果在加载Java类时遇到错误,可以尝试添加`-genmissing`选项,让`loadjava`自动生成缺失的依赖。 2. **权限问题**: - 网络访问权限:需要以`sys`用户登录Oracle,执行以下语句来授予连接...
可以使用SELECT DBTIMEZONE FROM DUAL;语句来判断数据库的时区。 21. GLOBAL_NAMES参数为TRUE的作用 当GLOBAL_NAMES参数设置为TRUE时,表示数据库链接必须使用相同的名字与远程数据库进行链接。 22. PL/SQL程序的...
- **知识点**:总结了执行SQL语句或其他操作时可能出现的各种错误及其解决办法。 16. **配置文件** - **知识点**:包括GCWare基本配置、GCluster配置参数和GNode的配置参数等内容,指导用户如何进行详细的配置...
26. 比较SQL Server与Oracle、DB2 27. 多个数据库时,如何设置默认数据库 28. 各种数据类型的比较 29. 漫谈oracle中的空值 30. 没有备份、只有归档日志,如何恢复数据文件 31. 哪些初始化参数最影响Oracle系统...
db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器。收费 大型企业 Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时...