Plsql 使用带括号的参数作为表名的oracle动态sql

Plsql 使用带括号的参数作为表名的oracle动态sql,plsql,dynamic-sql,using-statement,Plsql,Dynamic Sql,Using Statement,我的模式中有一个名称中带有括号的表(这是一个遗留表,无法修改): 所以我想要的是能够通过动态sql更新这个表。我就是这样尝试的: DECLARE sql_upd_statement VARCHAR2(500) := ''; table_name VARCHAR2(20) := '"Addresses"'; column_name VARCHAR2(20) := '"FullAddress"'; BEGIN --no rows will be updated, just a

我的模式中有一个名称中带有括号的表(这是一个遗留表,无法修改):

所以我想要的是能够通过动态sql更新这个表。我就是这样尝试的:

DECLARE 
  sql_upd_statement VARCHAR2(500) := '';
  table_name VARCHAR2(20) := '"Addresses"';
  column_name VARCHAR2(20) := '"FullAddress"';
BEGIN

   --no rows will be updated, just a sample 
   sql_upd_statement := 'UPDATE stm.:1 SET :2 = SUBSTR( :2, 2 ) WHERE :2 IS NOT NULL AND :2 IS NULL';

   dbms_output.put_line( sql_upd_statement );

  EXECUTE IMMEDIATE  sql_upd_statement USING IN table_name, column_name;

END;

请告诉我,是否可以通过动态sql实现我想要的?试图设置没有括号的“table\u name”、“column\u name”值-仍然不走运。

无法使用绑定变量传递架构对象名称,它们需要是文本

sql_upd_statement := 'UPDATE stm.'||table_name||' SET '||column_name||' = SUBSTR( '||column_name||', 2 ) WHERE '||column_name||' IS NOT NULL AND '||column_name||' IS NULL';

我看不到您的表名中有任何括号。谢谢,希望我错过了smth。好的,那么:)
sql_upd_statement := 'UPDATE stm.'||table_name||' SET '||column_name||' = SUBSTR( '||column_name||', 2 ) WHERE '||column_name||' IS NOT NULL AND '||column_name||' IS NULL';