【问题标题】:Dynamic PL/SQL动态 PL/SQL
【发布时间】:2009-04-15 06:54:10
【问题描述】:

在 PL/SQL 中,我想将源模式和目标模式作为参数传递给存储过程。我们可以使用的来源:

PROCEDURE select_from_schema( the_schema VARCHAR2)
IS
  TYPE my_cursor_type IS REF CURSOR;
  my_cursor  my_cursor_type;
BEGIN
  OPEN my_cursor FOR 'SELECT my_field FROM '||the_schema||'.my_table';

  -- Do your FETCHes just as with a normal cursor

  CLOSE my_cursor;
END;

对于目标插入或更新语句,我们如何在该插入或更新语句中使用该架构....有谁知道我该怎么做???

附:打扰一下;我是初学者,必须快速编写一些函数。

【问题讨论】:

  • 小心 SQL 注入。如果 'the_schema' 字符串包含来自 xkcd.com/327 的 sn-p 会发生什么?

标签: oracle plsql


【解决方案1】:

您可以对 INSERT 或 UPDATE 执行与 SELECT 相同的操作 - 使用如下动态 SQL:

EXECUTE IMMEDIATE 'INSERT INTO '||target_schema||'.my_table (col1,col2...) VALUES(:val1, :val2...)' USING my_row.col1, my_row.col2...;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2021-05-09
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多