gpt4 book ai didi

sql - 从 SQL 存储过程创建/更改

转载 作者:行者123 更新时间:2023-12-04 20:29:42 25 4
gpt4 key购买 nike

我想从过程中调用 create table/alter table 命令。是否可以?

我的要求是更改所有表中列的数据类型。所以,我只是从 user_tab_cols 获取列名.现在我想创建一个需要 create 语句的临时表 .. 但我无法在 proc 中使用它。

任何人都可以帮我吗?

最佳答案

我从对 USER_TAB_COLUMNS 的引用推测这是甲骨文。 ALTERCREATE语句是 DDL,我们不能直接在 PL/SQL 中执行。但是,有几种方法可以绕过此限制:EXECUTE IMMEDIATEDBMS_UTILITY.EXEC_DDL() .我会用 EXECUTE IMMEDIATE在下面的例子中。

begin
for lrec in ( select table_name from user_tab_columns
where column_name = 'UNIVERSAL_COLUMN_NAME')
loop
execute immediate 'alter table '||lrec.table_name||
' modify UNIVERSAL_COLUMN_NAME varchar2(255)';
end loop;
end;

请注意,通常的限制适用:新数据类型必须与现有数据类型兼容(除非该列为空),并且对于某些特定的数据类型(如 CLOB),事情会更加棘手。

编辑

我还没有提到 CREATE TABLE 语句。原理是一样的,就是打出来的时间长了点。此外,我并不完全清楚它如何适用于您之前更改这些列的数据类型的要求。

关于sql - 从 SQL 存储过程创建/更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1999460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com