最近学习oracle存储过程时发现的一个问题,就是传入的变量命名不能跟要执行的数据表的字段一样,如果一样的话,
可能会导致传入的参数起不了用处。例子如下:
建立一个表:
-- Create table
create table T_TEST12
(
ID NUMBER,
NO VARCHAR2(60)
);
往这个表里面插入一些数据,
insert into t_test12 (ID, NO)
values (1, 'lin');
insert into t_test12 (ID, NO)
values (2, '13800162');
insert into t_test12 (ID, NO)
values (3, '13800163');
insert into t_test12 (ID, NO)
values (4, '13800164');
insert into t_test12 (ID, NO)
values (5, '13800165');
insert into t_test12 (ID, NO)
values (6, '13800166');
编写一个删除的存储过程,
create or replace procedure delete_test(id in number) is --变量名称id跟数据库的字段一样
begin
delete from t_test12 where id =id;
commit;
end delete_test;
执行以下操作:
exec delete_test(1); 执行完后,发现并不是只删除了id为1的数据,
而是把整个表的数据都删除了,如果要想得到相应的结果,则变量
的命名不能跟表的字段名一样。比如如下:
create or replace procedure delete_test(is_del_id in number) is --变量名称id跟数据库的字段一样
begin
delete from t_test12 where id =is_del_id;
commit;
end delete_test;
posted on 2010-05-19 14:54
fly 阅读(404)
评论(0) 编辑 收藏 所属分类:
数据库学习