v_receipt         warehouse_receipt%ROWTYPE;-- 这里创建表类型,v_receipt复刻了warehouse_receipt的类型(相当于拥有了所有相同的字段)

select * into v_receipt_detail from warehouse_receipt_detail d where d.receipt_detail_id = v_detailId;

**而在MySQL总无法用select into new_table from old_table这个语句**

但是MySQL中有temporary table这个临时表

如何复刻另一张表呢,语句来了

create temporary table new_table (select * from old_table)

这样就创建了一个新的临时表

drop table if exists temp_table;
create temporary table temp_table(select * from test_table);
select name from temp_table where id=2; -- 这句话同样能用

那么,为什么要用这种表变量和复刻的临时表呢?

其实这种临时表是动态的,在满足某种筛选条件下,产生的筛选出的主表

test_table

delimiter $$
-- drop table if exists temp_table;
create procedure temp_test()
begin
drop table if exists temp_table;
create temporary table temp_table(select * from test_table);
-- set @name=temp_table.name;
select name from temp_table where id=2;
end$$
delimiter

测试

call temp_test()

结果

name

------

nyu-ploy

另保留一段代码

delimiter $$
drop procedure if exists test_at $$
create definer=root@localhost procedure test_at()
begin
declare i1 integer default 1;
set i1=i1+1;
set @i2=i2+1;
select i1,@i2;
end $$
delimiter;

**但重点是在oracle 中,表类型可以直接引用字段,即

v_inventoryTotal warehouse_inventory_total%ROWTYPE

v_inventoryTotal.XXId可以直接用,特别是ROWTYPE的表只有一行时,此时引用字段就是一个值

但是对于临时表 temp_table不可以直接 '.id'同时实质表也不可以

在MySQL中引用字段都要起别名 ,这和对象的道理一样,所以想用其中的字段,只能这样

delimiter $$
drop procedure if exists temp_test $$
create definer=root@localhost procedure temp_test()
begin
declare i1 integer default 1;
drop table if exists temp_table;
create temporary table temp_table(select * from test_table t where t.id=2);
select name into @temp_table_name from temp_table;
select @temp_table_name;
end $$
delimiter;

call temp_test ,就有一个值出来 即nyu-poly

如果这里where t.id>2,就会报错:Result consisted of more than one row 即@temp_table_name不可以是多个值

论MySQL中如何代替Oracle中select into new_table from old_table的更多相关文章

  1. mysql导入数据到oracle中

    mysql导入数据到oracle中. 建立Oracle表: CREATE TABLE "GG_USER" ( "USERID" BYTE) NOT NULL, ...

  2. SQL中Charindex和Oracle中对应的函数Instr

    转:http://blog.csdn.net/zhuyu19911016520/article/details/8568640 sql :charindex('字符串',字段)>0 charin ...

  3. mysql 生成UUID() 即 ORACLE 中的guid()函数

    MYSQL 生成UUID 即 guid 函数-- 带 - 的UUIDselect UUID() -- 去掉 - 的UUIDselect replace(uuid(),'-','') 一个表的数据插入另 ...

  4. Java SpringMvc+hibernate架构中,调用Oracle中的sp,传递数组参数

    一.问题 我们调用数据,大都是可以直接获取表中的数据,或者用复杂点的sql语句组成的.但是,有时候,当这样达不到我们要的全部数据的时候,这时,我们就用到了存储过程[sp],如果sp需要参数是数组的话, ...

  5. Oracle中的数据类型和数据类型之间的转换

    Oracle中的数据类型 /* ORACLE 中的数据类型: char 长度固定 范围:1-2000 VARCHAR2 长度可变 范围:1-4000 LONG 长度可变 最大的范围2gb 长字符类型 ...

  6. oracle 中的存储过程

      oracle 中的存储过程 --oracle 中的存储过程, --不带任何参数的 CREATE OR REPLACE PROCEDURE PRO_TEST AS -- AS 和is 没有任何区别 ...

  7. Oracle中的内置函数在sql中的转换整理

    程序里面经常会即支持Oracle数据库,又支持sql数据库.而有些Oracle内置函数用的比较多,但在sql中语法有些不同,我做了些整理,希望可以帮助大家.... 1.oracle中的内置函数:ora ...

  8. Oracle中REGEXP_SUBSTR函数(转)

    Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','2 ...

  9. Oracle中使用透明网关链接到Sqlserver[Z]

    Oracle中使用透明网关链接到Sqlserver 在最近项目中需要从Oracle中访问SQL Server数据库, 自然想到了透明网关. 因为Oracle数据库是Linux上的, 而Linux上的O ...

随机推荐

  1. Centos6.8 搭建Lvs+Keepalived

    Keepalived keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层.第4层和第7层交换.Keepalived是自动完成,不需人工干涉. 简 ...

  2. 转 Oracle最新PSU大搜罗

    Quick Reference to Patch Numbers for Database/GI PSU, SPU(CPU), Bundle Patches and Patchsets (文档 ID ...

  3. 万能makefile模板

    这里一份万能makefile模板,写opencv项目时候使用的. 前提是提前配置好 包管理工具 pkg 然后就不用每次都去 -lopencv_xxx了. ####################### ...

  4. oracle PL、SQL(二)

    oracle PL.SQL(基础知识点二) --1,参数 in:表示输入类型,可以省略 :out:输出类型不能省略---------- ----案例1:编写一个过程,可以输入雇员的编号,返回该雇员的姓 ...

  5. 【学习笔记】OSG中相机参数的更改

    #pragma comment(lib, "osg.lib") #pragma comment(lib, "osgDB.lib") #pragma commen ...

  6. Oracle创建用户及权限设置

    oracle用户创建及权限设置 权限: create session create table unlimited tablespace connect resource dba 例: #sqlplu ...

  7. Java Web开发之Spring | SpringMvc | Mybatis | Hibernate整合、配置、使用

    1.Spring与Mybatis整合 web.xml: <?xml version="1.0" encoding="UTF-8"?> <web ...

  8. Unity3D 在自定义脚本中实现Button组件上的OnClick面板

    下述内容不对c#语法做过多讲解,仅对已入门并有兴趣的同学做为学习和拓展的资料 大家在Unity制作的过程中一定都使用过UI功能,那么很多人也一定见过这个面板: 那么我们如何能在自己的脚本中添加上像On ...

  9. docker 新手入门 (阿里镜像仓库的使用)

    创建镜像仓库后的步骤是:   https://help.aliyun.com/document_detail/60743.html?spm=a2c4g.11186623.6.546.79be52f3y ...

  10. 技术抄录_Java高级架构师教程

    1.B2C商城项目实战     2.高性能架构专题     3.架构筑基与开源框架解析专题     4.团队协作开发专题     5.微服务架构专题     6.设计模式     附上[架构资料]   ...