最近學習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 閱讀(409)
評論(0) 編輯 收藏 所屬分類:
數據庫學習