1、这段代码应该是2部分 ,--上面是存储过程 --的下面是实行存储过程的语句,你这种写法类似于SQLSever的写法,在Oracle的有可能执行不下去。把这两段代码放在两个窗体里执行分开执行,就不会出错了。
2、在Oracle存储过程中,使用轮循INSERT语句时,若下一条数据中某些字段为空,可能是因为在插入过程中使用了变量赋值的方法。 例如,查询出的数据被放在一个变量中,然后通过INSERT语句将该变量插入到表中。 如果有空值出现,该变量会被赋值为空,不会保留上一次的结果。
3、出现的原因是由于,在插入字符或字符串型字段时。如果插入的数据是纯数字,则不会有错误;如果出现字符,则会报ORA-00984列在此处不允许异常。
4、这种情况属于插入数据后,没有提交(commit),导致表被锁,所以需要进行提交(commit)或者回滚(rollback)操作。如果当前session已关闭,可通过如下方法杀掉进程。
5、这个错误是因为存储过程探查不到test这个表,在你编译的时候它是不存在的,建议在语句前加如下字符 execute immediate insert into test values (v_i); 或者你就直接建一个永久性的表(建表语句就不要写在存储过程当中了),然后每次赋值前先截断 ,这样存储过程是不会因为对象不存在而失效。
6、无效状态有两种可能,一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。还有一种是存储过程使用的表有结构上的改变,需要重新编译一下。你重新编译一下,如果不成功,就是有语法问题,你需要修改存储过程。
实际上存储过程向表中插入数据和sql执行的区别是不大的,只不过是存储过程是用loop等循环插入,之后顺序执行sql语句,不用命令行执行。
v_name integer;begin v_name:=1;while v_name=10 loop begin insert into table(id,name) values(seq.nextval,v_name);v_name=v_name+1;end;end loop;=== 主题程序就是这样。
如果两个表相同列的顺序都一致,Version字段在表A的最后一列,那就好办了。alter table b add(s varchar(20) default );insert into a select * from b;我也很懒,所以想出了这个方法。如果Version字段在中间,其它字段的顺序都一样,可以先把Version字段Drop掉,再Add上。
在Oracle存储过程中,使用轮循INSERT语句时,若下一条数据中某些字段为空,可能是因为在插入过程中使用了变量赋值的方法。 例如,查询出的数据被放在一个变量中,然后通过INSERT语句将该变量插入到表中。 如果有空值出现,该变量会被赋值为空,不会保留上一次的结果。
请检查一下B表的是否有PK、FK、非空字段、唯一索引,不在你写BBB3之类。
给你个思路,先修改B表的表结构,增加A表中的两个列,然后更新B表,用来将A表中的数据插入到B表中对应的列。
其中你要注意a表和b表的就结构是否一致,就比如说a表有3列和b表中的3列是否是一一对应的,否则就不能成功。
web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码。
SQL语句把同一个表中的a字段中的数据复制到另一个字段b中可以使用update语句,例如:update cust set s8_16=unit , unit=;上述语句将unit字段内容更新到s8_16字段内,然后将unit字段内容置为了空。
第一步:使用PLSQL Developer,将导出用户对象的SQL文件,在Oracle10g 数据库中执行,创建数据库所有对象,第二步:使用PLSQL Developer中工具---》导入表功能,选择 PLSQL Developer选项卡,选择刚刚导出的.pde格式的文件,点击导入按钮,执行导入操作。
首先登录到数据库中,点击右上角有个工具栏,点击工具栏上的tools。选择导出用户对象,点击tools工具之后,向下查找Export User Objects功能,通过这个功能导出数据。选择需要导出的表或者序列或者存储过程等。在Type列中展示的是对象属性,表、序列和存储过程等。这里要选择存储过程或者序列。
sqlserver和oracle 存储过程语法不一样,不能什么都不做就直接移植过去使用的,需要重新修改才行。
可以使用odbc导。如果非要使用plsql 存储过程实现,首先你要解析mdb文件里面的数据格式,然后使用plsql 来解析。