oracle 复制一条记录只改变主键不写全部列名
场景:表TEST中有C1,C2,C3...字段,其中C1为主键,先需要复制表TEST中一条(C1='1'的)记录,修改主键列C1和需要变更的列后,再插入到表TEST中。
procedure P_TEST 执行过程:
create or replace procedure P_TEST(P_EXT_COLS IN VARCHAR2 --需要变更的列
) IS
VSQL VARCHAR2(200); --动态SQL
V_COLS VARCHAR2(200); --自动SELECT出来的列
begin
DELETE FROM TEST WHERE C1 <> '1';--执行前 还原测试表数据
--获取表TEST 除了需要变更的列以外的所有列
SELECT WMSYS.WM_CONCAT(T.COLUMN_NAME) INTO V_COLS FROM USER_TAB_COLUMNS t WHERE t.table_name = 'TEST' AND INSTR(P_EXT_COLS, T.COLUMN_NAME) = 0;
--SYS_GUID(),XXX对应需要变更的列
VSQL := 'INSERT INTO TEST (' || P_EXT_COLS || ',' || V_COLS ||') SELECT SYS_GUID(),''XXX'','||V_COLS||' FROM TEST WHERE C1=''1''';
EXECUTE IMMEDIATE VSQL;
COMMIT;
end;
测试存储过程:
SQL> SELECT C1,C2,C3 FROM TEST; C1 C2 C3
------------------------------------------ ------------------------------------------ ------------------------------------------
1 2 3
0038D118A2C84E288D1021DC2C9B6E76 2 3 SQL> EXEC P_TEST('C1,C2'); PL/SQL procedure successfully completed SQL> SELECT C1,C2,C3 FROM TEST; C1 C2 C3
------------------------------------------ ------------------------------------------ ------------------------------------------
1 2 3
56AEB018A375472BA34F5A3EE3E674C9 XXX 3 SQL> EXEC P_TEST('C1,C3'); PL/SQL procedure successfully completed SQL> SELECT C1,C2,C3 FROM TEST; C1 C2 C3
------------------------------------------ ------------------------------------------ ------------------------------------------
1 2 3
E4B7CF5D949542F0BA2A04AF21518AF5 2 XXX
oracle 复制一条记录只改变主键不写全部列名的更多相关文章
- Mysql复制一条或多条记录并插入表|mysql从某表复制一条记录到另一张表
Mysql复制一条或多条记录并插入表|mysql从某表复制一条记录到另一张表 一.复制表里面的一条记录并插入表里面 ① insert into article(title,keywords,de ...
- MyBatis 插入记录同时获取主键
MyBatis 插入记录同时获取主键 MyBatis 插入记录同时获取主键的系统界面 useGeneratedKeys 属性 keyProperty 属性 keyColumn 属性 selectKey ...
- mybatis+oracle 完成插入数据库,并将主键返回的注意事项
mybatis+oracle 完成插入数据库,并将主键返回的注意事项一条插入语句就踩了不少的坑,首先我的建表语句是: create table t_openapi_batch_info( BATCH_ ...
- MyBatis插入记录时返回主键id的方法
有时候插入记录之后需要使用到插入记录的主键,通常是再查询一次来获取主键,但是MyBatis插入记录时可以设置成返回主键id,简化操作,方法大致有两种. 对应实体类: public class User ...
- mybatis添加记录时返回主键id
参考:mybatis添加记录时返回主键id 场景 有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作.在使用mybatis作为ORM组件时,可以很方便地达到这个 ...
- 【原创】如何找到Oracle中哪条记录被锁
通常有这种情况,某个表或者准确的说是表的某条记录被锁(TX锁),在业务层面排查之余,一般都会想知道是哪条记录被锁,每次被锁的是否是同一条记录?还是每次都不同?通过记录可以找到这条记录可以在哪个模块.哪 ...
- Oracle前10条记录
在Oracle怎样查询表中的top10条记录呢? select * from test where rownum <=10 下面是关于rownum的介绍 ==================== ...
- Oracle 验证IOT表数据存储在主键里
iot表测试: 在create table语句后面使用organization index,就指定数据表创建结构是IOT.但是在不指定主键Primary Key的情况下,是不允许建表的. create ...
- 使用mybatis注解@Options实现添加记录时返回主键值
官网:http://www.mybatis.org/mybatis-3/index.html 在使用mybatis作为ORM框架时,我通常更喜欢使用注解而非xml配置文件的方式.业务场景:添加记录之后 ...
随机推荐
- jQuery全选、反选、全不选
原文链接:https://yq.aliyun.com/articles/33443 HTML内容部分: <ul id="items"> <li> <l ...
- 一、UITableView的属性
一.UITableView的属性 NSIndexPath类型是用来获取用户选择的indexPath,在别的函数里面,若需要知道用户选择了哪个cell,用上它可以省事很多.不必再去建全局变量sectio ...
- java中dynamic web project与web project 的区别 [转]
原帖地址:http://blog.sina.com.cn/s/blog_46726d2401013jlk.html 文章框架: 1.Dynamic Web Project 概念 2.eclipse ...
- 属性动画(Property Animation)资源
Animator 代表一个属性动画,但它只是一个抽象类,通常会使用它的子类:AnimatorSet.ValueAnimator.ObjectAnimator.TimeAnimator. 定义属性动画的 ...
- 双向队列 STL
题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首:两头都可以做出队,入队的操作.现在给你一系列的操作,请输出最后队列的状态:命令格式:LIN X X表示一个整数,命 ...
- -_-#【Angular】自定义过滤器
AngularJS学习笔记 <!DOCTYPE html> <html ng-app="Demo"> <head> <meta chars ...
- WCF默认实例的解读
一:图片 IService1.cs是定义的接口,包含对Service.方法和方法用的类的声明的声明 Service1.cs是对接口的实现,包含实现的方法 代码注释: using System; usi ...
- win7配置iis 出现:HTTP 错误 403.14 - Forbidden
打开 IIS 管理器. 在“功能”视图中,双击“目录浏览”. 在“目录浏览”页上,在“操作”窗格中单击“启用”. 确认站点或应用程序配置文件中的 configuration/system.webSer ...
- AJAX中的请求方式以及同步异步的区别
AJAX中的请求方式以及同步异步的区别请求方式,分为GET与POST: GET 最为常见的HTTP请求,普通上网浏览页面就是GET.GET方式的参数请求直接跟在URL后,以问号开始.(JS中用wind ...
- 五子棋——C++
最近在学C++,这个是照葫芦画瓢的五子棋C++版- - 依赖SDL_PingGe_1.3,很多实用的函数,类我都封装成DLL了调用起来真是舒服啊.. 不过一方面要对DLL做测试,一方面要开发,一个人还 ...