Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
第3行错误:ORA-00933:SQL命令未正确结束_Sql_Oracle - Fatal编程技术网

第3行错误:ORA-00933:SQL命令未正确结束

第3行错误:ORA-00933:SQL命令未正确结束,sql,oracle,Sql,Oracle,我正在运行下面的SELECT语句: 从标准价目表返回价格customer=0 如果客户被报了一个特价customer=X,则改用该价格 我收到错误消息: ERROR at line 3: ORA-00933: SQL command not properly ended Oracle版本为:Oracle8i企业版8.1.7.4.0版-生产版 SELECT glas_daten_basis.idnr, glas_daten_basis.gl_bez, NVL(p2.zum2, p1.zu

我正在运行下面的
SELECT
语句:

  • 从标准价目表返回价格
    customer=0
  • 如果客户被报了一个特价
    customer=X
    ,则改用该价格
  • 我收到错误消息:

    ERROR at line 3:
    ORA-00933: SQL command not properly ended
    
    Oracle版本为:Oracle8i企业版8.1.7.4.0版-生产版

    SELECT     glas_daten_basis.idnr, glas_daten_basis.gl_bez, NVL(p2.zum2, p1.zum2)
    FROM       glas_daten_basis
    JOIN       os_przu p1 ON p1.idnr = glas_daten_basis.idnr
    LEFT JOIN  os_przu p2 ON p2.idnr = glas_daten_basis.idnr AND p2.kunr = 63
    WHERE      p1.kunr = 0; 
    
    第3行是
    连接
    ,这里有什么问题吗

    更新:标准价目表中有137行,因此无论价格来自
    customer=0
    还是
    customer=X
    ,都应该给我137行。由于某种原因,到目前为止的答案给了我大约60行

    SELECT     os_przu.idnr, os_przu.zum2
    FROM       os_przu
    WHERE      os_przu.kunr = 0;
    ...
    137 rows selected.
    

    类似这样的,我没有测试代码,但是你得到了。(+)表示左连接。有关更多信息,请使用谷歌搜索“Oracle8 left join”


    类似这样的,我没有测试代码,但是你得到了。(+)表示左连接。有关更多信息,请使用谷歌搜索“Oracle8 left join”


    正如@a_horse-with_no_name所说,ANSI连接在8i中不起作用;他们直到9点才加入。因此,如果您真的停留在这个古老且不受支持的版本上,您将停留在旧的Oracle特定语法上:

    SELECT     glas_daten_basis.idnr, glas_daten_basis.gl_bez, NVL(p2.zum2, p1.zum2)
    FROM       glas_daten_basis, os_przu p1, os_przu p2 
    WHERE      p1.idnr = glas_daten_basis.idnr
    AND        p1.kunr = 0
    AND        p2.idnr (+) = glas_daten_basis.idnr
    AND        p2.kunr (+) = 63;
    
    这与@nelucon的答案非常相似,不同的是只有一个
    (+)
    左连接标记,并且它位于条件的错误一侧


    (+)
    是外部联接表的条件,它必须应用于外部联接表的每个条件-如果缺少一个条件,则忽略其余条件,并且它实际上再次成为内部联接。(ANSI联接更容易使用的原因之一,尽管通过参考
    where
    子句中的联接表以及
    on
    中的
    )仍然可能出错。

    正如@a_horse-with_no_name所说,ANSI联接在8i中不起作用;他们直到9点才加入。因此,如果您真的停留在这个古老且不受支持的版本上,您将停留在旧的Oracle特定语法上:

    SELECT     glas_daten_basis.idnr, glas_daten_basis.gl_bez, NVL(p2.zum2, p1.zum2)
    FROM       glas_daten_basis, os_przu p1, os_przu p2 
    WHERE      p1.idnr = glas_daten_basis.idnr
    AND        p1.kunr = 0
    AND        p2.idnr (+) = glas_daten_basis.idnr
    AND        p2.kunr (+) = 63;
    
    这与@nelucon的答案非常相似,不同的是只有一个
    (+)
    左连接标记,并且它位于条件的错误一侧


    (+)
    是外部联接表的条件,它必须应用于外部联接表的每个条件-如果缺少一个条件,则忽略其余条件,并且它实际上再次成为内部联接。(ANSI联接更容易使用的原因之一,尽管通过引用
    where
    子句中的联接表以及
    on
    中的
    仍然可能会出错)

    Oracle 8不支持显式
    联接。您需要从此服务器升级到Oracle版本century@a_horse_with_no_name有解决办法吗?这是我们的应用程序销售的嵌入式数据库版本。我无法控制它。内部连接,左连接,右连接,完全外部连接,自然连接,交叉连接。。。(从开始join之后的行需要定义join类型。Oracle 8不支持显式的
    join
    s。您需要从该行升级到Oracle版本。)century@a_horse_with_no_name有解决办法吗?这是我们的应用程序销售的嵌入式数据库版本。我无法控制它。内部连接,左连接,右连接、完全外部连接、自然连接、交叉连接…(从该连接开始后的行需要定义连接类型。最终的
    p2.numr=6
    有效地将其转换回内部连接。这需要是
    p2.kunr=63(+)
    @AlexPoole原始答案无论如何都不会返回正确的行数(检查问题中的更新),但是当我添加最后一个
    (+)
    您建议我在第6行得到错误消息
    error:ORA-00933:SQL命令没有正确结束
    @user3805423-抱歉,复制了答案的位置;左侧连接应该在另一侧。最后的
    p2.numr=6
    有效地将其转换回内部连接。这需要是
    p2.kunr=63(+)
    @AlexPoole原始答案无论如何都不会返回正确的行数(请检查问题中的更新),但当我添加最后一个
    (+)
    您建议我在第6行获得错误消息
    error:ORA-00933:SQL命令未正确结束
    @user3805423-抱歉,复制了答案的位置;左侧连接应该在另一侧。