- 浏览: 666685 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (608)
- Java (125)
- Struts (16)
- Spring (19)
- iBatis (11)
- Hibernate (14)
- Oracle (33)
- Mysql (22)
- JBoss (4)
- JavaScript (46)
- Ajax (9)
- jQuery (5)
- web (25)
- Html (14)
- Exception (26)
- Linux (106)
- Vim (11)
- Python (12)
- ComputerTech (25)
- 文章 (50)
- Maven (20)
- FreeMarker (5)
- Json (0)
- Tomcat (6)
- ActiveMQ (2)
- Test (1)
- Git (5)
- Shell (1)
- 《Java并发编程实践》 (2)
- 产品设计 (1)
- xxx (0)
- diamond (1)
- dubbo (1)
- Raspbian (1)
- IDE (3)
- 并发编程 (1)
最新评论
-
mikzhang:
抱歉,写这篇文章时,博主开发的程序只面对IE浏览器,故没考虑其 ...
JS 中改变confirm默认按钮提示“确定""取消" -
poterliu:
测试过了,发现execScript方法只支持IE浏览器。目前已 ...
JS 中改变confirm默认按钮提示“确定""取消"
ORA-14551: cannot perform a DML operation inside a query
〖环境(Environment)〗
OS:SOLARIS 9
DB:ORACLE10G
〖现象(Symptom) 〗
Step01:创建函数f_stu。
SQL> create or replace function f_stu
2 return varchar2
3 is
4 username varchar2(20);
5 predicate varchar2(100);
6 begin
7 INSERT INTO student2 (ID,FIRST_NAME,LAST_NAME,MAJOR,CURRENT_CREDITS)
8 VALUES(001,'MARY','KING','history',0);
9 commit;
10 return 'ok';
11 end;
12 /
Function created
这个函数往表student2种插入数据。
Step02:在SELECT语句中调用函数f_stu。
SQL> select f_stu()from dual;
select f_stu()from dual
ORA-14551: cannot perform. a DML operation inside a query
ORA-06512: at "F_STU",line 7
〖原理(Cause) 〗
在SELECT语句中不能对表进行修改(insert,update,delete)。本例中,SELECT语句中的函数试图往表student2中插入数据。
〖方法(Action) 〗
要想在SELECT语句中对表进行修改,可以使用自治事务(Autonomous Transactions,AT)。自治事务(Autonomous Transactions)是由另外一个事务调用的,这个叫事务做主事务(Main Transaction,MT)。自治事务(Autonomous Transactions)的提交(commit)和回滚(rollback)并不影响主事务(MT)。
Step01:将创建函数f_stu()的SQL语句
由:
create or replace function f_stu
return varchar2
is
username varchar2(20);
predicate varchar2(100);
begin
INSERT INTO student2(ID,FIRST_NAME,LAST_NAME,MAJOR,CURRENT_CREDITS)
VALUES(001,'MARY','KING','history',0);
commit;
return 'ok';
end;
改成:
create or replace function f_stu
return varchar2
is
PRAGMA AUTONOMOUS_TRANSACTION;
username varchar2(20);
predicate varchar2(100);
begin
INSERT INTO student2(ID,FIRST_NAME,LAST_NAME,MAJOR,CURRENT_CREDITS)
VALUES(001,'MARY','KING','history',0);
commit;
return 'ok';
end;
加入了PRAGMA AUTONOMOUS_TRANSACTION,表示使用自治事务(Autonomous Transactions)。
Step02:再次在SELECT语句中使用函数。
SQL> select f_stu() from dual;
F_STU()
--------------------------------------------------------------------------------
ok
SELECT语句执行成功,同时也往表student2中插入了数据。
发表评论
-
Oracle_ojdbc6 使用 报错
2015-06-10 14:29 1033via: http://sd8089730.iteye.c ... -
It is indirectly referenced from required .class file
2014-08-19 15:30 434via: http://www.blogjava.net/z ... -
Hibernate_a different object with the same identifier value was already associat
2014-07-05 17:03 516via: http://www.blogjava.net/h ... -
Connection reset by peer: socket write error
2013-03-14 10:24 853Connection reset by peer: soc ... -
java.sql.SQLException: 索引中丢失 IN 或 OUT 参数
2012-05-07 17:00 2571java.sql.SQLException: 索引中丢失 ... -
org.apache.coyote.tomcat5.CoyoteResponseFacade.sendRedirec
2012-03-19 15:25 1616【from http://www.cxy.me/bbs/vie ... -
request.getHeader("referer") is null
2012-03-19 15:23 952referer 用来判断上一页是不是自己的网站 如果我 ... -
Struts FileUpload - Processing of multipart/form-data request failed
2011-09-16 15:52 7308Struts FileUpload 异常处 ... -
HTTP Status 500 - No action instance for path could be created
2011-09-16 15:03 1710HTTP Status 500 - No action ... -
java.sql.SQLException: ORA-01830: date format picture ends before converting ent
2011-08-17 17:48 3408java.sql.SQLException: ORA-0 ... -
Bean property 'xxDao' is not writable or has an invalid setter method
2011-08-08 16:25 8744Bean property 'xxDao' is not ... -
SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null];
2011-08-04 15:38 2241网上解决方案 1.起初没有创建序列s_log,因此需要在Or ... -
org.xml.sax.SAXParseException: Document root element "struts-config", must match
2011-08-01 22:19 1678org.xml.sax.SAXParseException: ... -
Error creating form bean of class...
2011-08-01 10:44 1026Error creating form bean of cla ... -
java.text.ParseException: Unparseable date: "11/10/10" at java.text.DateFormat.
2011-08-01 10:39 5613使用DateFormat的使用,然后自己试了下,结果出来个错误 ... -
[interceptor.FileUploadInterceptor:intercept] [Removing file filesXXX .tmp]
2011-07-25 11:18 4506上传完文件时控制台显示[interceptor.FileUpl ... -
The Network Adapter could not establish the connection
2011-07-15 17:05 12561、oracle配置 oracle9i2中把C:\ora ... -
java.sql.SQLException: ORA-00933: SQL 命令未正确结束
2011-06-30 12:16 2112java.sql.SQLException: ORA-0093 ... -
ORA-00942 Table or View Does Not Exist Oracle Error
2011-06-22 23:55 4457Cause: java.sql.SQLException: ... -
getOutputStream() has already been called for this response
2011-06-22 23:48 1619java.lang.IllegalStateExceptio ...
相关推荐
### ora-01033: Oracle Initialization or Shutdown in Progress 解决方法 #### 一、问题背景及原因 **标题**: “ora-01033: Oracle initialization or shutdown in progress 解决方法” **描述**: “ora-01033: ...
### 如何处理错误ORA-29275:部分多字节字符 #### 问题背景与描述 在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$...
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
ORA-12154: TNS: 无法解析指定的连接标识符的解决方法
在Oracle数据库管理中,"ORA-00990: 权限缺失或无效"是一个常见的错误代码,它表示用户尝试执行的操作没有足够的权限。这个错误通常发生在试图访问、修改或者管理数据库对象(如表、视图、索引等)时。在本篇文章中...
ORA-32001:write to spfile requested but no spfile is in use请求写入spfile,但没有使用spfile的解决方法 在输入以下语句中报了这样的错误: SQL>alter system set control_files=’/u01/app/oracle/oradata/prod/...
#### ORA-00062: Unable to Grant DML Locks with All Others Set to Zero 无法授予DML锁,因为所有其他DML锁都设置为零。这可能是由于并发控制机制的问题。 #### ORA-00063: LOG_FILES Parameter Value Invalid 当...
在Oracle数据库系统中,"ORA-00060: 等待资源时检测到死锁" 是一个常见的错误提示,它表明两个或多个事务在执行过程中陷入了无法继续进行的状态,因为彼此都在等待对方释放资源。这种情况通常发生在并发操作中,比如...
在Oracle数据库中,"ORA-00904"是一个常见的错误代码,它表示尝试引用一个不存在或无效的标识符。在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但...
在Oracle数据库系统中,"ORA-01036:非法的变量名/编号"是一个常见的错误,通常出现在PL/SQL代码或者SQL查询语句中,当你尝试使用一个不正确或者未定义的变量时,Oracle数据库会抛出这个错误。这个错误可能是由于...
oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程;无法转换...
然而,当你尝试向CLOB字段插入数据时,如果超过了Oracle规定的最大限制,就会遇到“ORA-01704: 文字字符串过长”的错误。这个错误通常意味着你试图插入的字符串超过了Oracle数据库允许的最大长度,对于VARCHAR2类型...
在使用Oracle Data Pump工具IMPDP(Import Data Pump)进行数据导入的过程中,可能会遇到ORA-39002和ORA-39070等错误。本文将针对这些错误的排查方法进行详细介绍,帮助用户理解问题的原因及解决策略。 ### 错误...
-- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... ...
在处理Oracle数据库时,我们经常遇到错误代码ORA-00031,它表明指定的会话已经被标记为终止。这个错误通常与数据库锁定和会话管理有关。本文将详细解析这一问题的解决方案,并提供一系列SQL语句和命令来处理和解决...
### Oracle回收站功能详解与彻底删除表方法 #### 一、Oracle回收站功能概述 Oracle数据库自10g版本开始引入了回收站功能...同时,需要注意避免因SQL语句编写不当而导致的ORA-00933错误,以确保操作的顺利进行。
ORA-12737: Instant Client Light: unsupported server character set CHS16GBK/ZHS16GBK解决方案oci sqlplus instantclient_12_2
oracle报错ora-12541:TNS无监听程序