【问题标题】:Read stored procedure source code from Sybase ASE 15.7 database从 Sybase ASE 15.7 数据库中读取存储过程源代码
【发布时间】:2014-10-23 13:17:35
【问题描述】:

我想访问一些存储过程的源代码,这些存储过程存储在 Sybase ASE 15.7 数据库中。 目前,我将文本手动复制到文本文件中,并通过磁盘中执行的 java 代码读取它。

现在我的目标是改进这个过程:我将在我执行的 java 代码中直接从数据库中获取源代码。 那可能吗? 抱歉,我不知道。

我有 Rapid SQL 来处理数据库。

【问题讨论】:

    标签: java database sap-ase


    【解决方案1】:

    您可以运行调用存储过程 sp_helptext 的 ISQL 脚本来获取存储过程的代码。希望这会有所帮助。

    【讨论】:

    • 你好文斯。非常感谢您的回答。在我的 sql-tool (rapid sql) 中,它运行良好。但它返回的结果集多于一个。使用getMoreResults()getResultSet 方法后,我仍然无法访问我需要的结果集。我找到了另一个解决方案(请参阅我的答案)。
    【解决方案2】:

    Vince 的提示是使用存储过程 sp_helptext。这个存储过程产生了不止一个结果集,给我带来了困难。

    RobV 的回答是使用存储过程 sp_showtext。这似乎是更好的解决方案,因为它只返回一个结果集。但我用 jdbc 尝试过,它曾经抛出一个 sql 异常(“必须返回一个结果集”)。

    在我失败后,我找到了另一个解决方案,该解决方案只需要执行一个 select 语句即可。这对我有用!代码如下:

        StringBuffer sbSP = new StringBuffer();
        String query = "select c.text "
                      +"from syscomments c, sysobjects o "
                        +"where o.id=c.id and o.name='"+spName+"' order by c.colid";
    
        PreparedStatement stmt = connection.prepareStatement(query);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            //loop over every row of the stored procedure
            sbSP.append(rs.getString("text") + "\n");
        }
    

    【讨论】:

      【解决方案3】:

      最好使用 sp_showtext;它提供了比 sp_helptext 更好的格式化结果(没有损坏的 SQL 行)

      【讨论】:

      • 你好 RobV。我尝试用 jdbc 调用 sp_showtext,但每次都失败,因为没有返回结果集(其他正常查询有效)。在我的 sql-tool (rapid sql) 中,它运行良好。我为 jdbc 找到了另一种解决方案。非常感谢您的帮助
      猜你喜欢
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 2016-10-05
      • 2017-12-11
      • 2017-12-09
      • 2017-05-13
      相关资源
      最近更新 更多