>  기사  >  데이터 베이스  >  Oracle ORA-01451: 要修改为 NULL 的列无法修改为 NULL

Oracle ORA-01451: 要修改为 NULL 的列无法修改为 NULL

WBOY
WBOY원래의
2016-06-07 16:58:519735검색

调试一段程序,遇到如题错误,查资料才发现Oracle中不允许将NULL字段修改为NULL字段。只好在修改之前做判断了。打开PL/SQL,写如

调试一段程序,遇到如题错误,查资料才发现Oracle中不允许将NULL字段修改为NULL字段。只好在修改之前做判断了。
打开PL/SQL,写如下代码
declare
visnull varchar2(4);
begin
select nullable into visnull from user_tab_columns
where table_name = upper('tblStockInspect')
and column_name = upper('FDepartID');
if visnull = 'N' then
alter table tblStockInspect modify FDepartID int null;
end if;
end; 

运行,,又出现错误提示如下
---------------------------------------------------------------------------
ORA-06550: 第 8 行, 第 7 列:
PLS-00103: 出现符号 "ALTER"在需要下列之一时:
( begin case declare exit
for goto if loop mod null pragma raise return select update
while with
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge
---------------------------------------------------------------------------------
仔细一看,原来alter不允许在PL/SQL下直接运行,只好更改如下
declare
visnull varchar2(4);
begin
select nullable into visnull from user_tab_columns
where table_name = upper('tblStockInspect')
and column_name = upper('FDepartID');
if visnull = 'N' then
execute immediate 'alter table tblStockInspect modify FDepartID int null‘;
end if;
end; 
运行通过

linux

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.