如下
update table1 set name = 'A' ;
update table2 set name = 'B' ;
update table3 set name = 'B' ;
oracle 数据库中三表table1 、table2、table2 需要同时更新 这三表,
如果其中一条语句更新失败,其他更新
语句都回滚。
不允许写在存储过程里。 ---------------
谢谢啦
如果是java的话.
package com.xlh.read;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class Conn {
public void update() {
String sql1 = "update table1 set name = 'A' ";
String sql2 = "update table2 set name = 'B' ";
String sql3 = "update table3 set name = 'B' " ;
Connection conn = DBConnection.getConnection() ;
PreparedStatement ps = null ;
try {
conn.setAutoCommit(false) ;
ps = conn.prepareStatement(sql1) ;
ps.executeUpdate() ;
ps = conn.prepareStatement(sql2) ;
ps.executeUpdate() ;
ps = conn.prepareStatement(sql3) ;
ps.executeUpdate() ;
conn.setAutoCommit(true) ;
} catch (SQLException e) {
conn.rollback() ;
e.printStackTrace() ;
}
}
}
begin
update gjhohj_a set name='123' where id=1 ;
update gjhohj_b set name = '456' where id=4 ;
commit ;
exception
when others then
rollback ;
end ;
若想关闭这种默认提交方式,让多条SQL在一个事务中执行,并且保证这些语句是在同一时间共同执行的时,我们就应该为这多条语句定义一个事务。 其中,银行转账这一事例,最能说明,使用事务的重要性了。 update ...
oracle一个事务的完整流程 服务进程如何处理用户进程的请求 服务器进程在完成用户进程的请求过程中,主要完成如下7个任务: 0.sql语句的解析 1.数据块的读入db buffer 2.记日志 3.为事务...
关于今天的内容,你会从以下几个方面进行学习:Oracle 中的 SQL 是如何执行的,什么是硬解析和软解析;MySQL 中的 SQL 是如何执行的,MySQL 的体系结构又是怎样的;什么是存储引擎,MySQL 的存储引擎都有哪些?...
虽然之前写了不少Oracle上的SQL语句,但是没有抽出时间对Oracle进行一个系统的学习,实践固然重要,但没有一个理论上的规范学习与理解,在实践中就不能举一反三,就不能写出高规范高质量的SQL语句。
sql%rowcount用于记录修改的条数,必须放在一个更新或者删除等修改类语句后面执行,select语句用于查询的话无法使用, 当你执行多条修改语句时,按照sql%rowcount 之前执行的最后一条语句修改数为准。
在查找资料的时候,发现了一条Sql语句。通过这条语句,可以知道当前连接的数据库正在执行的sql语句是什么。是一种比较有效的获取当前数据库动态的方式;通过获取当前执行的sql语句,来判断当前数据
下面记录一下自己制作一个同步用户的批处理文件执行oracle sql语句的过程。 新建一个空白的文本文件,修改名称为 同步程序.bat打开该文件,在文件中输入如下内容 sqlplus /nolog @runSql.sql>runSql.log...
ORACLE中可以通过v$session表查看当前有效的session信息,并且可以通过v$session的sql_id或sql_address通过关联查询v$sql查看当前正在执行的sql语句; 如果我们想查看session近期执行的sql语句,可以通过v$active_...
--查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, paddr, sql_text 正在执行的SQL, b.machine 计算机名 FROM v$proces
88.Oracle数据库SQL开发之 修改表内存——数据库事务的开始和结束 ...l 前一个事务结束后,又输入了另外一条DML语句 事务结束,以下事件之一发生时候: l 执行COMMIT或ROLLBACK语句 l 执行一条DDL语句,如CREATE T
oracle 根据事务号 xid 如何找到对应的那个语句 v$transaction的addr和v$session的taddr对应可以找到session, v$session下面有sql_address,sql_hash_value可以找到对应v$sql或者v$sql_text里的sql语句。...
几乎所有的Python教程都会讲,教程里基本只介绍了执行单条SQL语句的方法,但是实际生产过程中可不只是执行一两条语句,动辄几十条甚至上百条的SQL语句,一个.SQL的SQL文件正常都会包含多条SQL语句,如果把这些SQL...
1、首先打开idea,里面有个database按钮,点击打开; 2、点击+号,新建一个oracle实例,填写主机ip和用户名与密码即可,链接测试成功!!!
我odbc 连接数据库 执行 sql语句总是报错 java.sql.SQLException: ORA-01013 报错用户请求取消当前的操作 实际是超时问题 具体的执行的语句如下 update dm.t_dm_role e set USERIDS =',147,150,724,' where e....
问题开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果。但是奇怪的是执行其他的select语句却是可以执行的。原因和解决方法这种...
存储过程执行增删改查sql 下边是一个简单的数据库表,为了方便,我都定义成了varchar 类型。 1、存储过程执行增加sql 首先写一个增加的存储过程: create or replace procedure test_add_procedure ...
在自动化测试过程中有时候我们需要自动跑一些sql脚本来维护自动化测试数据库,那么这时候我们可以选择批处理命令来执行sql语句。 环境准备: 执行sql服务器需要安装有oracle客户端。 步骤如下: 1、新建一个sql...
ORACLE BEGIN END 关键字表示一个完整的块。 在任何一个ORACLE 的PL/SQL块中至少需要...begin ...end的意义可以理解为SQL语句执行的上下限,begin 是上限,SQL开始的地方,end是下限sql语句结束的地方. 另外,执行一个
由于经常要去业务库执行sql语句,库太多,该脚本就是来解决这个问题的。#!/bin/sh if [ $# -lt 1 ] then echo "No SID." exit fi SID=$1 host=${SID}".xxxx:port/"${SID} connection=user/password@${host} echo ...
有时我们需要一次性执行多条sql语句,但是在执行时可能会报错:ORA-00911:invalid character. 解决方法: 将所有sql语句用begin......end;包裹起来. 如: begin ...... ...... ...... end;
在oracle中使用sql语句执行了delete和update和insert命令,在本地数据库中已执行成功查看并没有删除成功或更新数据库,很是尴尬,为什么会出现这种不一致的情况呢? 原来是因为我执行命令后没有commit提交,那么...
由于经常执行SQL语句,如果一条一条执行效率低下。 oarclecmd.CommandText = sqlstr; oraclecmd.ExecuteNonQuery(); sqlstr 可以写成如下所示语句 begin sql1; sql2; ...... sqln; end; //注意此处的分号很...
select a.sql_text SQL语句, b.etime 执行耗时, c.user_id 用户ID, c.SAMPLE_TIME 执行时间, c.INSTANCE_NUMBER 实例数, u.username 用户名, a.sql_id SQL编号 from dba_hist_sqltext a, (...
最近在看项目里大批量数据导入操作,但是涉及数据较多关联其他表也较多时,插入Oracle中时会导致表被锁住,此文记录表被锁住时的查询表状态及正在执行的SQL。 1.以下SQL用于查看当前数据库登陆用户及正在执行的SQL ...
我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析。在Oracle中存在两种类型的SQL语句,一类为 DDL语句(数据定义语言),他们是从来不会共享使用的,也就是每次执行都需要进行...
有时我们需要一次性执行多条sql语句,而用来更新的sql是根据实际情况用代码拼出来的 解决方案是把sql拼成下面这种形式: begin update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = '...
查询v$sql select * from v$sql t...where t.LAST_ACTIVE_TIME>(sysdate - interval '1' MINUTE) --执行1分钟内的SQL语句 and t.PARSING_SCHEMA_NAME = 'LSBIKE' --数据库 and (t.MODULE is null or t.MODULE not lik
oracle数据库使用plsql developer 如何显示的开启一个事务?就像mysql中的begin; start transaction;语句这样。书上说 Oracle 事务分为2中类型(显式和隐式方法) 显示方法,就是利用命令完成。 Oracle中的事务不...
有时候业务会包含很多次数据库操作,为了减少数据库连接,我们会选择一次提交大量sql,这时我们会用到begin end,使用begin end需要注意的是,每个sql语句都要确保以“;”结尾,代表一句sql结束,比如我们要执行一次...
executeBatch()方法:用于成批地执行SQL语句,但不能执行返回值是ResultSet结果集的SQL语句,而是直接执行stmt.executeBatch(); addBatch():向批处理中加入一个更新语句。 clearBatch():清空批处理中的更新语句 ...