oracle的存储过程中新建表后,怎么往表里面插入数据。
来源:互联网 发布:淘宝刷手qq群 编辑:程序博客网 时间:2024/04/28 21:18
我们如果想在oracle存储过程中新建表后往表里插入数据,可能会这样写。其中i为前面定义的number变量。可以看到我想在新建的表的第一列插入其他的表的字段的数据user_id。然后在第二列插入-1这个值。
--yidongming@20160706 select count(*) into i from user_tables where table_name='CERT_USERS_IN_SYSTYPE';if i=0 thenexecute immediate'create table CERT_USERS_IN_SYSTYPE(USER_ID NUMBER(6,0) NOT NULL,SYS_TYPE NUMBER(6,0) NOT NULL,constraint PK_US primary key (USER_ID,SYS_TYPE))';COMMIT;END IF;--yidongming@20160720 初始化CERT_USERS_IN_SYSTYPE表select count(*) into i from CERT_USERS_IN_SYSTYPE;if i=0 thenINSERT INTO cert_users_in_sysTypeSELECT cui.user_id,'-1' FROM cert_user_info cui WHERE cui.deleted=0;COMMIT;END IF;
当他们分开执行时,先执行第一个,再第二个,是没有问题的,如果将插入表的语句直接写在创建表之后,都放在一个存储过程中,执行脚本会报错,提示说该表不存在。原因就是insert这个语句在执行时会检查分析,这时候的表还没有创建。所以报错了。所以将insert语句用execute immediate的方式执行可以避开检查。执行结果也是成功的。下面是修改过的语句。
declarei number;begin--yidongming@20160829 select count(*) into i from user_tables where table_name='CERT_USERS_IN_SYSTYPE';if i=0 thenexecute immediate'create table CERT_USERS_IN_SYSTYPE(USER_ID NUMBER(6,0) NOT NULL,SYS_TYPE NUMBER(6,0) NOT NULL,constraint PK_US primary key (USER_ID,SYS_TYPE))';execute immediate'INSERT INTO cert_users_in_sysType (user_id,sys_type)SELECT cui.user_id,''-1'' FROM cert_user_info cui WHERE cui.deleted=0';commit;end if;commit;end ;如果没看懂的或者有疑问的欢迎留言。如果有错误也欢迎指出,谢谢!
0 0
- oracle的存储过程中新建表后,怎么往表里面插入数据。
- 2016年要学会用存储过程向关联的几张表里面插入数据。
- Sqlite插入、修改、删除表里面的数据
- 怎么用VLOOKUP来匹配excel表里面的数据
- 数据结构--如何对一个线性表里面的元素赋值,并且显示插入一个数据后的情况
- oracle中从4个表查询数据并插入到另一张表里 扩展到查询到的数据和其他数据共同插入
- sqlserver将一个表的数据插入到另外一个表里面
- JAVA中调用Oracle存储过程插入数据
- oracle删除或者更新了表里面的数据…
- MySql数据库新建表后,插入数据不成功的解决办法
- oracle 创建表并创建存储过程,通过存储过程将其他用户的信息导入到新建表中
- oracle存储过程含参数的插入数据
- oracle 采用游标循环插入数据的存储过程
- 怎样将SQL SERVER表里的数据插入到Access表的指定列中?
- oracle存储过程实例(1)--插入数据
- oracle 存储过程插入数据不成功
- oracle存储过程插入百万数据
- Oracle 存储过程批量插入数据
- SVM多分类问题 libsvm在matlab中的应用
- Xcode7程序打包详细过程
- JVM架构(014)_什么是Dump文件
- Java同步之synchronized
- 局部多项式插值法【LPI】的工作原理
- oracle的存储过程中新建表后,怎么往表里面插入数据。
- PixelEdit使用教程
- 通用DAO之MyBatis封装,封装通用的增删改查(三)
- LeetCode : 160. Intersection of Two Linked Lists
- 对获取简单网页数据方法进行封装
- WifiConfiguration解析
- 关于LeetCode中Find the Difference一题的理解
- QTP自动化测试关于VBScript基础链接(转)
- hdu5375 dp