gpt4 book ai didi

sql - 调整数据库表中每个 VARCHAR 列的大小 - Oracle 11g

转载 作者:行者123 更新时间:2023-12-05 00:29:04 24 4
gpt4 key购买 nike

我至少有 65 VARCHAR表中的列 A我必须从 X bytes 调整大小至 X char .我希望找到比问题更简单的方法 ALTER TABLE A MODIFY..命令 65 次。

任何人都可以帮我解决如何以更快的方式做到这一点吗?

最佳答案

您可以编写一些动态 SQL。假设表在当前模式中

DECLARE
l_sql_stmt VARCHAR2(1000);
BEGIN
FOR t IN (SELECT * FROM user_tab_cols WHERE table_name = 'A')
LOOP
l_sql_stmt := 'ALTER TABLE ' || t.table_name || ' MODIFY (' ||
t.column_name || ' varchar2(' || t.char_length || ' char))';
EXECUTE IMMEDIATE l_sql_stmt;
END LOOP;
END;

你可以看到下面的工作
SQL> ed
Wrote file afiedt.buf

1 create table foo(
2 col1 varchar2(10 byte),
3 col2 varchar2(20 byte)
4* )
SQL> /

Table created.

DECLARE
l_sql_stmt VARCHAR2(1000);
BEGIN
FOR t IN (SELECT * FROM user_tab_cols WHERE table_name = 'FOO')
LOOP
l_sql_stmt := 'ALTER TABLE foo MODIFY (' ||
t.column_name || ' varchar2(' || t.char_length || ' char))';
EXECUTE IMMEDIATE l_sql_stmt;
END LOOP;
END;


SQL> desc foo;
Name Null? Type
----------------------------------------- -------- ----------------------------
COL1 VARCHAR2(10 CHAR)
COL2 VARCHAR2(20 CHAR)

关于sql - 调整数据库表中每个 VARCHAR 列的大小 - Oracle 11g,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10130700/

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