很多人没注意的select into 问题讨论
CREATE OR REPLACE PROCEDURE insertBlob(id varchar2, imgFile varchar2)
IS
img_file BFILE;
img_blob BLOB;
lob_length NUMBER;
BEGIN
INSERT INTO personphoto VALUES(id,empty_blob());
SELECT photo INTO img_blob FROM personphoto WHERE pid = id; -- 这里只是把photo 列值给了img_blob
img_file := bfilename('PHOTO',imgFile);
dbms_lob.OPEN(img_file);
lob_length := dbms_lob.getlength(img_file);
dbms_lob.loadfromfile(img_blob,img_file,lob_length); -- 这里只是把img_blob修改了,但是为什么会同时修改表personphoto 中photo 列对应的记录呢???????
dbms_lob.close(img_file);
COMMIT;
end;
/
比较
CREATE OR REPLACE PROCEDURE testinsert(in_SNO NUMBER)
IS
u_name Varchar2(10);
BEGIN
SELECT sname INTO u_name FROM STUDENT WHERE sno = in_SNO; -- 这里把sname列值给了u_name
u_name := 'TTTT'; -- 这里把u_name改变了,但是STUDENT 表中sname列对应的记录不会变。。。???????
COMMIT;
END;
/
上面两个程序中都是用select into,但是第一个会把表的记录数据也修改,第二个却不会,这是为什么???????
相关推荐
MYSQL SELECT INTO 和 INSERT INTO SELECT
关于MySQL中“SELECT INTO”和“INSERT INTO SELECT”两种语法的使用与说明。
select into和insert into select使用方法
select into 和 insert into select 两种表复制语句 第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建 第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源表(srcTbl)的字段外,还可以插入常量
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)
1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1 或者:Insert into Table2 select * from Table1 注意:(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在 (2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2…中必须包括主键 (3)注意语法,不要加values,和插入一条数据的sql混了,不要写成: Insert into Tab
INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别
INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别介绍,需要的朋友可以参考下面的说明与条件
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句简单介绍
Insert是T-sql中常用语句,Insert INTO table(field1,field2,…) values(value1,value2,…)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。 1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,…) select value1


