【问题标题】:How to execute multiple lines in Oracle Sql Developer?如何在 Oracle Sql Developer 中执行多行?
【发布时间】:2019-05-10 08:38:16
【问题描述】:

我在 Sybase 数据库上与 Oracle Sql Developer 合作,并且在执行一个简单的 select 语句时遇到了困难,该语句分散在多行中。

    IF 1=1 
    BEGIN
       SELECT 'Foo'
    END
    ELSE
       SELECT 'Bar'
    END

如果我在查询生成器中选择这些行并使用F5CTRL + Enter 执行它,我会收到Incorrect syntax near the keyword 'BEGIN' 错误。

如果我把语句写在一行上

    IF 1=1 BEGIN SELECT 'Foo' END ELSE BEGIN SELECT 'Bar' END

我得到了预期的结果。

    ---
    Foo

如果语句分散在多行上,是否可以配置执行行为?

【问题讨论】:

    标签: oracle oracle-sqldeveloper sap-ase


    【解决方案1】:

    您可以试试这个 - 它告诉 SQL Developer 处理以下字符串,以 / 或 ; 结尾单独一行,作为查询。

    问题出在使用非 Oracle 语法运行 SQL 或代码块...我们是 Oracle SQL Developer,而不是 Sybase 的 Oracle SQL Developer。

    提供 Sybase 连接是为了将数据库迁移到 Oracle,而不是在 Oracle Database 或 TimesTen 以外的任何类型的数据库中执行日常数据库工作。

    /*sqldev:query*/ 
      IF 1=1 
        BEGIN
           SELECT 'Foo'
        END
        ELSE
           SELECT 'Bar'
        END
    /
    

    【讨论】:

    • 感谢 thatjeffsmith 的提示。不幸的是,我使用这种语法得到了Incorrect syntax near the keyword 'END' 错误。
    • 虽然这段代码可以回答问题,但最好解释一下如何解决问题并提供代码作为示例或参考。仅代码的答案可能会令人困惑且缺乏上下文。
    • @DimaKozhevin 我还没有答案,因为我不确定这是否会起作用,并且因此无法轻松发布“试试这个”或将代码示例作为 cmets。跨度>
    • @thatjeffsmith:感谢您为您的答案添加补充。我理解你的观点。但我不明白为什么这个简单的 sql 语句只有在我写在一行时才会运行。有没有办法查阅日志文件以查看发送到 sybase 的有效语句?
    • @DimaKozhevin 因为我们有一个 oracle 语句解析器,如果它在一行上,你可以偷偷溜进去
    【解决方案2】:

    BEGIN 和 END 不匹配。尝试删除最后一个 END 或在 ELSE 语句之后插入一个 BEGIN。

    /*sqldev:query*/
      IF 1=1
        BEGIN
           SELECT 'Foo'
        END
        ELSE
        BEGIN
           SELECT 'Bar'
        END
    

    【讨论】:

      猜你喜欢
      • 2015-03-02
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 2014-07-23
      相关资源
      最近更新 更多