PL/SQL:以 table 和列名作为参数的过程

PL/SQL: procedure with table and column name as parameters

我想在 PL\SQL 中编写一个过程,它将特殊字符(在下面的示例中:哈希)更改为先验声明的字符(在下面的示例中:下划线)。该过程应采用 table 名称和列名称作为参数。我写了这样的代码,但是,它不起作用:

create or replace procedure change_chars(table_name in varchar2, column_name in varchar2)
    begin
        execute immediate 'update ' || table_name ||
        ' set ' || column_name || ' = replace(' || column_name ||', '''#''', '''_''')';
    end;

如有任何帮助,我们将不胜感激

您在 BEGIN 之前缺少 IS,并且您的字符串中的引号过多:

create or replace procedure change_chars(table_name in varchar2, column_name in varchar2) is
begin
    execute immediate 'update ' || table_name ||
    ' set ' || column_name || ' = replace(' || column_name ||', ''#'', ''_'')';
end;

要处理带引号的字符串,您可以改用 Q operator

' set ' || column_name || ' = replace(' || column_name || q'[, '#', '_')]';