Welcome 微信登录

首页 / 数据库 / MySQL / Oracle ORA-01451: 要修改为 NULL 的列无法修改为 NULL

调试一段程序,遇到如题错误,查资料才发现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 <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
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; 
运行通过Oracle 空值(null)有关的函数MySQL在Linux下安装详细教程相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数