程序无法从 Urban Code Deploy 创建执行

Posted

技术标签:

【中文标题】程序无法从 Urban Code Deploy 创建执行【英文标题】:Procedure fails to create executing from Urban Code Deploy 【发布时间】:2018-06-28 11:03:24 【问题描述】:

我在尝试执行以下脚本时遇到了问题。在 SQLDeveloper 或 DataGrip 等其他工具中,一切正常,所以在我的理解中,这是 UCD 问题。

...more inserts
insert into M_MIGRATION_CONTROL values ('PRODUCTREL', 'M_' || 'PRODUCTREL');

CREATE OR REPLACE PROCEDURE MIGRATE_DATA_BEFORE_DEPLOY IS
  TABLE_NAME VARCHAR2(128);
  MIGRATION_TABLE_NAME VARCHAR2(128);
  CURSOR MIGRATION_CURSOR IS SELECT * FROM M_MIGRATION_CONTROL;
  BEGIN
    OPEN MIGRATION_CURSOR;
    LOOP
      FETCH MIGRATION_CURSOR INTO TABLE_NAME, MIGRATION_TABLE_NAME;
      EXIT WHEN MIGRATION_CURSOR%NOTFOUND;
      EXECUTE IMMEDIATE 'CREATE TABLE '||MIGRATION_TABLE_NAME||' AS SELECT * FROM '||TABLE_NAME||'';
    END LOOP;
    CLOSE MIGRATION_CURSOR;
  END MIGRATE_DATA_BEFORE_DEPLOY;
/

insert into A_ACCEPTEDINCOMETYPEOPTION select * from M_A_ACCEPTEDINCOMETYPEOPTION;
insert into A_INSTALMENT select * from M_A_INSTALMENT;
...more inserts

有错误:

[sql] Failed to execute:  MIGRATION_TABLE_NAME VARCHAR2(128)
      [sql] java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement
      [sql] Failed to execute:  CURSOR MIGRATION_CURSOR IS SELECT * FROM M_MIGRATION_CONTROL

当我从 Oracle 打印程序正文时,我得到:PROCEDURE MIGRATE_DATA_BEFORE_DEPLOY IS TABLE_NAME VARCHAR2(128) 所以我认为客户端在第一个;之后结束create procedure

你能帮我/建议我,这个脚本应该如何正确执行? (甲骨文 12.1)

【问题讨论】:

这些错误消息似乎不是来自 SQL*Plus。首先,它不使用 Java。当您遇到这些错误时,您使用的客户端和版本到底是什么? 啊,现在我明白了。这个脚本是通过 Urban Code Deploy 执行的,我被告知它是通过 SQL*Plus 执行的。但现在我发现这是不正确的 - 在日志中我看到了 UCD 的 SQL-JDBC 插件并使用:jdbcDriver=oracle.jdbc.driver.OracleDriver 和 jdbcJar=/appl/ucdmw/ucd-database-helper-libs/ojdbc7.jar ,但我无法确定版本。我会问管理员......不过,那个 odbc 驱动程序的问题会更少吗? 【参考方案1】:

你正在使用SQL-JDBC plugin for Urban Code Deploy.

根据to their documentation/troubleshooting:

SQL-JDBC 插件不支持部署存储过程。

您可以使用单独的SQL*Plus plugin 代替。

【讨论】:

以上是关于程序无法从 Urban Code Deploy 创建执行的主要内容,如果未能解决你的问题,请参考以下文章

我可以在自动缩放时使用 AWS code Deploy 来拉取应用程序代码吗?

将 Auto Scaling 与 Code Deploy 结合使用 - Ec2 实例无限循环重启

Urban Airship phonegap 3.5 with Phonegap Build

使用 Urban Airship & Phonegap,无法注册设备:“Device token is nil”

使用 Urban Air Ship 显示所有发送到 IOS 设备的通知

无法从 access 2010 代码创建 access 2013 accde