Insert into XX(?,?,?) values(?,?,?) 上面是我们自己写的sql语句,我们要插入的值是3个。而数据库中对表XX的定义字段却只有两个,即XX(?,?)。所以我们传的参数的个数多出一个,这样数据库就会报“ORA-00913: 值过多”。 所以我们需要把上面的sql语句改为 Insert into XX(?,?) values(?,?) 或者修...
SELECT object_name FROM t1 where t1.object_id in (select value from str_list); 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 当然,如果in中的字符很长,很可能变量长度hold不住。 三、 多行多列子查询 名字叫Multiple Row and Column Subqueries,使用这种语法,in中值的上限可以到10万而不是1000,足够满...
这个是可以的 sql:insert into tablename1(filename1,filename2) as select t2.filename1,t2.filename2 from tablename2 t2 where t2.id>5;解释:从tablename2表中找到id大于5的 filenam1字段和filename2字段 插入到tablename1表中的filename1字段和filename2字段中;除此之外,表tabl...
实现的语法为 INSERT INTO 表 (字段一,字段二,字段三) SELECT 值一,值二,值三 FROM DUAL UNION(或者) UNION ALL SELECT 值一一,值二二,值三三 FROM DUAL; UNION(或者) UNION ALL SELECT 值一一一,值二二二,值三三三 FROM DUAL; 三、解决方案
insert into 表名 (字段a,字段b) select '值a1','值b1' from dual union select '值a2','值b2' from dual 那么这一次就插入了两条数据。当然,如果全字段插入 那个(字段a,字段b)还可以省略掉。 好处是:避免了写复杂而又没必要写的存储过程,避免了执行多个SQL语句多次连接数据库的开销。
create global temporary tablet_test_temp(idvarchar(20))on commit preserve rows;insert into t_test_tempVALUES('test0001');SELECT*FROMt_test_name vWHEREEXISTS(SELECT1FROM(selectNAMEfrom t_test aWHEREEXISTS(select1from t_test_temp tWHEREa.id=t.id))bWHEREv.NAME=b.NAME) ...
sec@ora10g> DECLARE 2 BEGIN 3 FOR cur IN (SELECT * FROM t_ref) LOOP 4 INSERT INTO t VALUES cur; 5 COMMIT; 6 END LOOP; 7 END; 8 / PL/SQL procedure successfully completed. Elapsed: 00:03:12.77 逐行提交的情况下,一共用时3分12秒。
我们经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。 1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 ...
execute immediate 'select name from emp where id=:1' into v_name using 7369; dbms_output.putline(v_name); end; / 1. 2. 3. 4. 5. 6. 7. 2. dml语句 注意目标sql有几个绑定变量,using后就跟多少输入值。using后的输入值只与绑定变量位置有关,与名称无关,所以写insert into emp(id,name,...