从动态SQL创建动态脚本

时间:2016-07-11 18:50:04

标签: oracle plsql

我搜索过很多Q-A,但我找不到我想要的东西。我正在寻找创建一个以动态方式为两个不同的查找表生成传输脚本(但不执行它)的过程。

我已经能够使用:

创建sql select语句
DECLARE
testertable            VARCHAR2(320) := 'LOOKUP_TABLE';
testerid               VARCHAR2(320) := '999';
testerfield            VARCHAR2(320) := 'id_no';

type nameArray IS TABLE OF VARCHAR2(60);
type typeArray IS TABLE OF VARCHAR2(60);

data_nameA        nameArray := nameArray();
data_typeA        typeArray := typeArray();

i                 NUMBER;

CURSOR c_curse IS SELECT column_name, data_type
FROM user_tab_columns
WHERE table_name = testertable; 

i := 0;
FOR n IN c_curse LOOP
i := i + 1;
data_nameA.EXTEND(1);
data_typeA.EXTEND(1);
data_nameA(i) := n.column_name;
data_typeA(i) := n.data_type;
END LOOP; 

从那里,我可以创建select语句。然后我想使用该语句打开一个查询,并填充insert语句,使用data_typeA(i)作为参考,以确保根据需要输入引号。

这是我不允许修改的更大传输功能的一部分,我的任务是扩展它以包括这两个查找表,每个传输系统可能存在也可能不存在。

希望输出将是CLOB或其他文本字段:

-- transport for lookup 'LOOKUP_TABLE'
Insert into LOOKUP_TABLE VALUES (value1, 'value2', value3), (value4, 'value5', value6), (value7, 'value8', value9);

谢谢。

0 个答案:

没有答案