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