程序无法从 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”