請問oracle 8 可不可以改變Table 欄位長度?

[复制链接]
查看11 | 回复6 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
oracle 8 Table 中的某欄位要更改長度應如何作 ?
其它有用到的程式是否要重新compile
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
你是问column length 吧,只能变得比原来长,
alter tableemp modify (ename varchar(20));
原来是10。
应该不用重新compile
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
謝謝 runnet 兄
沒錯我是要加長欄位長度..

oracle 8 可以用嗎?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 runnet 发布
[B]你是问column length 吧,只能变得比原来长,
alter tableemp modify (ename varchar(20));
原来是10。
应该不用重新compile [/B]

对绝大多数的表的DDL动作都会导致相应的存储过程实效, alter table xxx move例外.
例子:
SQL> create table t(id varchar(3));
Table created.
SQL> create or replace procedure p
2is
3cnt number;
4begin
5select count(*) into cnt from t;
6end;
7/
Procedure created.
SQL> select object_name,status from user_objects where status='INVALID';
no rows selected
SQL> alter table t modify(id varchar(20));
Table altered.
SQL> select object_name,status from user_objects where status='INVALID';
OBJECT_NAME
--------------------------------------------------------------------------------
STATUS
--------------
P
INVALID
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
謝謝chao_ping
那應該要重compile 吧
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 APINGO 发布
[B]謝謝chao_ping
那應該要重compile 吧 [/B]

如果简单的话, 会自动重新编译的:
SQL> select object_name,status from user_objects where status='INVALID';
OBJECT_NAMESTATUS
--------------
P
INVALID
SQL> EXEC P
PL/SQL procedure successfully completed.
SQL> select object_name,status from user_objects where status='INVALID';
no rows selected
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
为了不要重新修改编译你的程序。
你在定义变量时,尽量使用这种方式
l_varname table_name.column_name%type;
下次数据库结构修改,会重新编译,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行