【发布时间】:2017-05-12 09:43:00
【问题描述】:
我有一个包含多个 SQL 语句的 .sql 文件。我需要遍历每个语句并从 Perl 脚本执行它们。问题是 SQL 语句是多行语句,它们包括 cmets。
到目前为止,我们手动使用了sqlplus 命令。但是现在我们需要自动化它来执行每条语句并捕获每条语句的成功或失败。如果语句失败,我需要停止执行文件中的 SQL 语句。据我所知,sqlplus 是不可能的;在其中一条语句失败后,它会继续执行剩余的语句。
.sql 文件如下所示....
--Add new columns to TABLE_NAME table
ALTER TABLE "DATA"."TABLE_NAME" ADD(NAME varchar2(30));
--Create new table FILE_4G_TABLE
CREATE TABLE "DATA"."FILE_4G_TABLE"
(
abc VARCHAR2(30 CHAR),
def NUMBER(38),
ghi NUMBER,
JKL VARCHAR(32)
CONSTRAINT "FILE_4G_TABLE" PRIMARY KEY ("abc")) TABLESPACE "DATA";
有人,请指导我。
【问题讨论】:
-
所以你要解析SQL。试试SQL::Statement。
-
正在使用什么风格的 SQL? (对于哪个数据库服务器?)
-
oracle 数据库。我正在使用 DBI。
-
如何与数据库通信并不重要。你不是想那样做;您正在尝试解析 SQL 语句。
标签: sql perl parsing oracle11g