我正在尝试实施本文所述的内容:http://www.rwijk.nl/AboutOracle/psdua.pdf
(简而言之,我的sql文件在目录'myApp / tables /','myApp / priviledges /','myApp / sequences /'中创建数据库对象,如表,权限,序列,索引等) ...我想执行这些文件来安装我的数据库。)
有一个示例应该看起来像install_db.sql脚本p11-12,但sql文件的执行是硬编码的:
@@&tables_path.SCA_OPNAMES.sql
@@&tables_path.SCA_METERSTANDEN.sql
@@&sequences_path.SCA_MSD_SEQ1.sql
@@&sequences_path.SCA_ONE_SEQ1.sql
@@&indexes_path.MSD_ONE_FK1_I.sql
@@&privs_path.privileges.sql &SCHEMAPREFIX
我更愿意执行给定目录中的所有文件,但这似乎很棘手。
有一个很好的帖子可以获取目录中的文件列表:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:439619916584它运行良好。
所以在这一点上,我有一个临时表中的文件列表,现在我想执行这些文件。
令人惊讶的是,我坚持这一步。 我想做这样的事情:
for tab in (select filename from dir_list) loop
@tab.filename;
end loop;
但由于我不在pl / sql程序中,所以它不起作用。我可以从pl / sql程序执行文件吗?答案对我来说不是很清楚,我读了这个问题的相反答案。
感谢您的帮助,
答案 0 :(得分:0)
您可以尝试使用动态PL / SQL 例如,编写一个PL / SQL过程 - 将文件的内容读入变量然后 - 使用EXECUTE IMMEDIATE动态SQL构造执行PL / SQL。