`
arch1980
  • 浏览: 1178 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

关于在oracle中动态创建触发器问题,为什么有的机器可以创建成功呢

 
阅读更多
请教关于动态创建触发器问题,为什么我放在sqlplus中可以执行,把语句放到ibatis就不行了


//create sequence
allSQL.append("CREATE SEQUENCE USERTABLE_"+tableid+"_SEQ")
.append(" START WITH 1 ")
.append(" INCREMENT BY 1 ")
.append(" NOMINVALUE ")
.append(" NOMAXVALUE ")
.append(" NOCYCLE ")
.append(" CACHE 20 ")
.append(" ORDER \n commit;");
updateSql = allSQL.toString();
logger.debug("创建序列======="+updateSql);
allSQL.delete(0, allSQL.length());
updateObject("createTableSequenceTrigger", updateSql);

//create trigger
allSQL.append("CREATE OR REPLACE TRIGGER USERTABLE_"+tableid+"_SETID BEFORE\n");
allSQL.append("INSERT ON USERTABLE_").append(tableid).append(" FOR EACH ROW DECLARE\n");
allSQL.append(" next_id NUMBER;\n");
allSQL.append(" BEGIN\n");
allSQL.append(" SELECT USERTABLE_").append(tableid).append("_SEQ.NEXTVAL\n");
allSQL.append(" INTO next_id\n");
allSQL.append(" FROM dual;\n");
allSQL.append(" :new.ID := next_id;\n");
allSQL.append(" END;");
updateSql = allSQL.toString();
logger.debug("执行触发器创建======================="+updateSql);
allSQL.delete(0, allSQL.length());
updateObject("createTableSequenceTrigger", updateSql);



在IBATIS中的SQL语句为

<update id="createTableSequenceTrigger" parameterClass="string">
<![CDATA[
$updateSql$
]]>
</update>



报出错误为:
SqlMapClient operation; unca
tegorized SQLException for SQL []; SQL state [null]; error code [17041];
--- The error occurred in config/lzda/designer/sqlmap/designer.xml.
--- The error occurred while applying a parameter map.
--- Check the FORM_DESIGNER.createTableSequenceTrigger-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1; nested excepti
on is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in config/lzda/designer/sqlmap/designer.xml.
--- The error occurred while applying a parameter map.
--- Check the FORM_DESIGNER.createTableSequenceTrigger-InlineParameterMap.
--- Check the statement (update failed).

分享到:
评论

相关推荐

    oracle 的若干问题

    7. **查看用户登录信息**:要查看哪个用户从哪台机器登录Oracle,可以查询`V$SESSION`动态性能视图,其中包含`MACHINE`和`TERMINAL`列。 8. **查询字段和表信息**: - `DESC table_name`显示表的结构。 - `SELECT...

    oracle傻瓜问题1000问

    ### Oracle傻瓜问题1000问:常见问题与解答 #### 1. Oracle 安装完成后初始口令 在安装Oracle数据库后,系统通常会设置一些预设的用户名和密码,这些账户对于管理和维护Oracle数据库至关重要。以下是几个常见的...

    ORACLE常用傻瓜问题1000问.doc

    在Oracle数据库管理系统中,有众多的概念和技术需要理解和掌握。以下是一些基于提供的问题和部分文件内容的关键知识点: 1. **Oracle安装后的初始口令**:Oracle在安装完成后会设置一些默认的系统用户口令,例如`...

    《JSP+Oracle动态网站开发》

    通过学习《JSP+Oracle动态网站开发》中的实例和代码,读者将能够熟练掌握使用JSP和Oracle开发动态网站的技能,实现从机器可理解的代码到面向程序员的高效开发流程。无论是初学者还是有经验的开发者,都能从中受益,...

    oracle傻瓜1000问

    在"Oracle傻瓜1000问"中,我们可以看到一系列关于Oracle基础操作和管理的问题。以下是一些主要的知识点: 1. **初始口令**:Oracle安装完成后,会预设一些默认的系统用户,如internal/oracle, sys/change_on_...

    oracle_语句大全

    6. **SVRMGR和SQLPLUS**:SVRMGR是早期Oracle服务器管理工具,但在9i及更高版本中被SQLPLUS替代,通过`sqlplus /nolog`可以登录并执行各种管理任务。 7. **追踪用户登录来源**:要查看用户从哪台机器登录Oracle,...

    ORACLE基础知识1000问

    7. **查询用户登录信息**:要查看哪个用户从哪台机器登录Oracle,可以查询`V$SESSION`动态性能视图,如`SELECT machine, terminal FROM V$SESSION`。 8. **查询字段和表信息**:使用`DESC`命令可以查看表的结构,而...

    [oracle 1000问]

    - Oracle 8.0.5 使用`orainst`工具创建数据库,如果安装时有图形界面,可以使用`orainst /m`。 - Oracle 8.1.7 引入了`dbassist`工具简化创建过程。 - Oracle 9i 及更高版本通常使用Database Configuration ...

    oracle数据库1000问.docx

    6. **查询用户登录信息**:可以使用`V$SESSION`动态性能视图查询用户是从哪台机器登录的Oracle数据库,例如:`SELECT machine, terminal FROM V$SESSION;` 7. **查询字段信息**:要查看表结构,可以使用`DESC table...

    Oracle 概念培训

    ### Oracle概念培训知识点详解 #### 一、Oracle数据库概述 - **定义与作用**:Oracle是一种...通过这些内容的学习,可以帮助初学者快速了解Oracle数据库的基本原理和技术要点,并为进一步深入学习打下坚实的基础。

    数据库打包

    这些脚本包含了创建表、存储过程、触发器等数据库对象的SQL语句,用于在目标环境中重建数据库结构。 2. **数据迁移**:除了结构,数据也是数据库的重要组成部分。我们可以使用`bcp`命令(SQL Server)或`expdp`/`...

    JAVA程序员面试问题

    TCP/IP模型可以视为OSI模型的简化版,主要关注传输层和网络层,但两者都描述了数据在网络中的传输过程。 #### 9. 面向对象编程 面向对象编程(OOP)是一种编程范式,它使用“对象”作为编程的基本单位。对象包含了...

    PLSQLDeveloper用户指南.pdf

    - 介绍了如何在PL/SQL Developer中创建和管理非PL/SQL数据库对象,如表、视图、触发器等。 - 每种对象都有专门的编辑器,提供直观的操作界面。 - 支持自定义对象属性和行为。 #### 九、图表 - 提供了创建和编辑...

    Delphi 查询全攻略

    在复杂数据库应用中,存储过程和触发器经常被用到。存储过程是一组预先编译的SQL语句,可提高性能并简化代码;触发器则在特定数据库事件发生时自动执行。学会在Delphi中调用存储过程和管理触发器是提升数据库应用...

    pl/sql笔记

    2. **生成和管理XML文档**:PL/SQL支持直接在数据库中创建和管理XML文档,便于数据交换和集成。 3. **Web页面与数据库的结合**:PL/SQL可以用于构建动态Web内容,实现Web应用程序与数据库的无缝对接。 4. **自动化...

    C#开发经验技巧宝典

    0948 在.NET 2.0框架下动态创建Access数据库 553 0949 在.NET 2.0框架下动态创建Access数据表 553 0950 如何备份Access数据库 554 20.2 SQL数据库的使用 554 0951 建立SQL Server数据库连接 554 0952 ...

Global site tag (gtag.js) - Google Analytics