【问题标题】:PL/SQL: procedure with table and column name as parametersPL/SQL:以表和列名作为参数的过程
【发布时间】:2018-07-12 09:36:52
【问题描述】:

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

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;

任何帮助将不胜感激

【问题讨论】:

标签: plsql oracle11g parameter-passing procedure tablename


【解决方案1】:

您在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'[, '#', '_')]';

【讨论】:

    猜你喜欢
    • 2021-02-18
    • 2011-03-27
    • 2023-04-02
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多