最近學(xué)習(xí)oracle存儲(chǔ)過程時(shí)發(fā)現(xiàn)的一個(gè)問題,就是傳入的變量命名不能跟要執(zhí)行的數(shù)據(jù)表的字段一樣,如果一樣的話,
可能會(huì)導(dǎo)致傳入的參數(shù)起不了用處。例子如下:
建立一個(gè)表:
-- Create table
create table T_TEST12
(
ID NUMBER,
NO VARCHAR2(60)
);
往這個(gè)表里面插入一些數(shù)據(jù),
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');
編寫一個(gè)刪除的存儲(chǔ)過程,
create or replace procedure delete_test(id in number) is --變量名稱id跟數(shù)據(jù)庫(kù)的字段一樣
begin
delete from t_test12 where id =id;
commit;
end delete_test;
執(zhí)行以下操作:
exec delete_test(1); 執(zhí)行完后,發(fā)現(xiàn)并不是只刪除了id為1的數(shù)據(jù),
而是把整個(gè)表的數(shù)據(jù)都刪除了,如果要想得到相應(yīng)的結(jié)果,則變量
的命名不能跟表的字段名一樣。比如如下:
create or replace procedure delete_test(is_del_id in number) is --變量名稱id跟數(shù)據(jù)庫(kù)的字段一樣
begin
delete from t_test12 where id =is_del_id;
commit;
end delete_test;
posted on 2010-05-19 14:54
fly 閱讀(408)
評(píng)論(0) 編輯 收藏 所屬分類:
數(shù)據(jù)庫(kù)學(xué)習(xí)