使用 Oracle PL/SQL 中的存储过程更改 table 的列名
Change table's column name using stored procedure in Oracle PL/SQL
我是 Oracle 新手 PL/SQL。我得到了一个 table 名字 EMP_1812057(SAL, HIRDATE)
。如何通过创建存储过程来更改其列的名称?我可以做一些事情,比如将新名称作为过程的参数传递,然后它将列名称更改为该新名称吗?你能给我一些例子吗?还是谢谢了。
我不确定该过程的真正目的是什么(我们不会经常修改列名,而且我们很少在过程中这样做),但是 - 你会使用动态 SQL使用适当的 ALTER TABLE
语句。
例如,将 SAL
列重命名为 SALARY
:
SQL> desc emp_1812057
Name Null? Type
----------------------------------------- -------- ----------------------------
SAL NUMBER
HIREDATE DATE
SQL> create or replace procedure p_emp is
2 begin
3 execute immediate 'alter table emp_1812057 rename column sal to salary';
4 end;
5 /
Procedure created.
SQL> exec p_emp
PL/SQL procedure successfully completed.
SQL> desc emp_1812057
Name Null? Type
----------------------------------------- -------- ----------------------------
SALARY NUMBER
HIREDATE DATE
SQL>
我是 Oracle 新手 PL/SQL。我得到了一个 table 名字 EMP_1812057(SAL, HIRDATE)
。如何通过创建存储过程来更改其列的名称?我可以做一些事情,比如将新名称作为过程的参数传递,然后它将列名称更改为该新名称吗?你能给我一些例子吗?还是谢谢了。
我不确定该过程的真正目的是什么(我们不会经常修改列名,而且我们很少在过程中这样做),但是 - 你会使用动态 SQL使用适当的 ALTER TABLE
语句。
例如,将 SAL
列重命名为 SALARY
:
SQL> desc emp_1812057
Name Null? Type
----------------------------------------- -------- ----------------------------
SAL NUMBER
HIREDATE DATE
SQL> create or replace procedure p_emp is
2 begin
3 execute immediate 'alter table emp_1812057 rename column sal to salary';
4 end;
5 /
Procedure created.
SQL> exec p_emp
PL/SQL procedure successfully completed.
SQL> desc emp_1812057
Name Null? Type
----------------------------------------- -------- ----------------------------
SALARY NUMBER
HIREDATE DATE
SQL>