动态 PL/SQL
Posted
技术标签:
【中文标题】动态 PL/SQL【英文标题】:Dynamic 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 会发生什么? 【参考方案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...;
【讨论】:
以上是关于动态 PL/SQL的主要内容,如果未能解决你的问题,请参考以下文章
oracle(sql)基础篇系列——PLSQL游标存储过程触发器
算法动态规划 ④ ( 动态规划分类 | 坐标型动态规划 | 前缀划分型动态规划 | 前缀匹配型动态规划 | 区间型动态规划 | 背包型动态规划 )
算法动态规划 ④ ( 动态规划分类 | 坐标型动态规划 | 前缀划分型动态规划 | 前缀匹配型动态规划 | 区间型动态规划 | 背包型动态规划 )
算法动态规划 ② ( 动态规划四要素 | 动态规划状态 State | 动态规划初始化 Initialize | 动态规划方程 Function | 动态规划答案 Answer )